[67] ping
属性は、リンクをたどる際に同時にアクセスするべき
URL を指定するものです。
[74] 著者は JavaScript その他の方法で ping
属性を使わずとも同じことが実現できるわけですが、
ping
属性を使えば何を行うか (どこがリンク先で、
どこに ping
を行うか) 利用者・利用者エージェントに対して明確にでき、
利用者エージェントが処理タイミングを調整するなどして利用者の体験を向上させることが期待できます。
従って、著者は他の方法ではなく ping
を使うべきです
>>50。
[75] 例えば検索エンジンは、直接リンク先サイトにリンクせず、 一旦自社サイトにリンクして、そこからリダイレクトすることで、 どのサイトが選択されたかを集計することができます。
[76] これを ping
による集計に切り替えることで、
ping
へのアクセスは Webブラウザーが裏で行うこととなるので、
利用者はリダイレクト分の余計な時間をかけずに目的サイトに移動できます。
(利用者の体験が向上するのは、検索エンジンにとっても好ましいことです。)
[77] また、利用者は正しいリンク先の URL をステータスバーで確認できます。
[78] 加えて、利用者が潔癖なら Webブラウザーの設定を変更して ping
属性を無効化することで、
集計を拒否できます。
(検索エンジンにとっては改善のためのデータを収集する機会が失われるので嬉しくはありませんが、
それを快く思わない人から無理に収集するのもまた意に反するでしょう。
リダイレクトその他独自の方法では、利用者にその選択肢を与えることも困難です。)
[51] ping
属性の処理は、
要素要素とリンク先の対象URLについて、
次のようにしなければなりません >>50。
[42] ping
属性の処理は、ハイパーリンクをたどる処理から呼び出されます。
[43] 趣旨からするとダウンロード時にも ping
が送信されるべきと思われますが、
なぜかそうなっていません。 (ハイパーリンクをたどることにより navigate
が発生し、それがダウンロードに至った場合には、最初のたどった時点で
ping
が送信されます。)
[69] Ping-From:
ヘッダーは、 https:
のページの場合、同一起源でなければ送信されません。つまり同一起源ポリシーが適用されます。
http:
の場合は、異なる起源であっても送信されます。
Referer:
ヘッダーの動作 (参照元ポリシー
no-referrer-when-downgrade
) に倣ったものと思われますが、
同一起源でなければならない分、少し厳しくなっています。
[70] そもそも ping
の URL は著者が指定するもので、
著者は任意の URL を指定でき、 URL に自ページの URL
を含めることもできるわけですから、この制約は情報の漏洩を防ぐものではありません。
XHR や Fetch を使って Ping-From:
の指定された要求を送信することはできますから、
第三者の不正なスクリプトからの送信を防げるものでもありません。
この制約が何のためのものなのかは不明です。
[71] >>70 CORS preflight でOKが出ないと POST
+
Ping-From:
は送れないのか。それなら、 HTTPS
を使っていれば、不正な要求と区別できる。
[72] >>14 で削除された仕様書のコメントによると元々 Referer:
を含めないことにしていたのは他の POST
と区別できるようにするためらしい。
既存のサーバーの CSRF などの検査を壊さないように
Referer:
とは別にほぼ同じ意味の Ping-From:
を設定することにしたようである。更に付け加えると、 ping
は
CORS より古いので、 Ping-From:
が他の方法で指定されて異なる起源に送信される、
ということは想定されていない模様。
[80] Chrome、Opera、Safari が実装しています。
[15] 2005年10月に Web Applications 1.0 に追加されました。
[1] Mozilla Links 日本語版: Firefox のプライバシー問題 http://mozlinks-jp.blogspot.com/2006/01/firefox_21.html
あれだ、やっぱりping
もタグ
なのかよw
(名無しさん 2006-01-22 01:27:04 +00:00)
[2] Bug 319368 - Implement <a ping> https://bugzilla.mozilla.org/show_bug.cgi?id=319368 (名無しさん 2006-01-27 01:03:54 +00:00)
[3]
本当の問題は安全性よりも (賛成派の主張の通り、少なくても今より危険になるわけではない)、POST
されることではないか。
もちろんHTTPやREST的にはPOST
の方が適当なのだが、
tag soup application開発者はしばしば
(form
ではなく) a
でPOST
することを望んでいる
(あちこちの掲示板で頻出の質問)。
ping
がそれに濫用される可能性がないだろうか。
ただしping
に対する応答はレンダリングされないので、彼らの需要を満たせるのかどうかには疑問もあるが。
ping
を使ってPOST
して、鯖側でセッション管理 (もちろんREST制約違反)、href
とセッション情報
(Cookie) でGET
して結果を得る、ただしping
とhref
のどちらが先に処理されるかはわからないのでRefresh
でもして待つ、
などという裏技が紹介される日が来る・・・かもしれない。 もはや何をしたかったのかよくわからないがw
(名無しさん 2006-01-27 08:07:12 +00:00)
2007-10-27 11:50:07 +09:00
版) https://bugzilla.mozilla.org/show_bug.cgi?id=401217
(名無しさん 2007-10-27 02:50:26 +00:00)2007-11-02 22:05:54 +09:00
版) http://permalink.gmane.org/gmane.org.w3c.whatwg.discuss/123162008-01-30 20:33:36 +09:00
版) http://permalink.gmane.org/gmane.org.w3c.whatwg.discuss/13091[16] 2010年3月には、実装状況がよくないため、 W3C HTML5 から除外されました。 (最新版 HTML には残されました。)
[23] HTML5 Revision Tracker Move ping='' to the next version of HTML (and out of the W3C HTML5 draft) ( 版) http://html5.org/tools/web-apps-tracker?from=4823&to=4824
[24] IRC logs: freenode / #whatwg / 20100823 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20100823#l-350
[25] Ilya Grigorik - Google+ - Google mobile search is getting faster - to be exact,… ( ( 版)) https://plus.google.com/+IlyaGrigorik/posts/fPJNzUf76Nx
[26] 401217 – Issues with support for "ping" attribute ( ( 版)) https://bugzilla.mozilla.org/show_bug.cgi?id=401217
[27] [webkit-dev] <a ping> landed ( ( 版)) https://lists.webkit.org/pipermail/webkit-dev/2010-October/014657.html
[28] [webkit-dev] <a ping> landed ( ( 版)) https://lists.webkit.org/pipermail/webkit-dev/2010-October/014575.html
[29] Issue 21589 - chromium - Implement <a ping> - An open-source project to help move the web forward. - Google Project Hosting ( ( 版)) https://code.google.com/p/chromium/issues/detail?id=21589
[30] Bug 50488 – Enable <a ping> for Mac/Windows/WebKit2 builds ( ( 版)) https://bugs.webkit.org/show_bug.cgi?id=50488
[31] Issue 257281 - chromium - <a ping> does not issue a ping request when "Open Link in New Tab" - An open-source project to help move the web forward. - Google Project Hosting ( ( 版)) https://code.google.com/p/chromium/issues/detail?id=257281
[32] 951104 – Enable <a ping> by default ( ( 版)) https://bugzilla.mozilla.org/show_bug.cgi?id=951104
[33] IRC logs: freenode / #whatwg / 20131219 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20131219
[34] Web Applications 1.0 r8369 Make a.ping and area.ping use DOMSettableTokenList based on #whatwg feedback. Hopefully no content relies on their existing implementations; if they do let me know and we'll back this out. ( ( 版)) http://html5.org/tools/web-apps-tracker?from=8368&to=8369
[35] Bug 24238 – Should the tokens in HTMLAnchorElement.ping be resolved? ( ( 版)) https://www.w3.org/Bugs/Public/show_bug.cgi?id=24238
[36] Add ping context · 2c01edc · whatwg/fetch ( ( 版)) https://github.com/whatwg/fetch/commit/2c01edca7a910f333b8ffac9d51d872f0b58e895
[4] Due to [PutForwards] the ping IDL attribute needs be readonly · whatwg/html@29578b4 ( 版) https://github.com/whatwg/html/commit/29578b4cb3f79aaaa3401b5f7e800867edba0ee8
[5] Integrate Fetch into HTML · whatwg/html@7c5555a ( 版) https://github.com/whatwg/html/commit/7c5555a16f2920c02244c10756bb2f1a11e87a22
[6] Chrome が実装しており、標準で有効になっています。 Firefox は標準で無効にしています。
[7] IDL属性 ping
を Chrome も Firefox も実装しています。 (Firefox は標準で
ping
属性を無効にしていますが、 IDL属性は存在します。)
[8] IDL属性 ping
を Chrome も Firefox も DOMTokenList
ではなく
DOMString
としています。
[9] Intent to Implement: Replace DOMString with DOMSettableTokenList for {HTMLAnchorElement, HTMLAreaElement}.ping. - Google グループ ( 版) https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/Z-RBeFLHRSU
[10] Issue 498219 - chromium - Replace DOMString with DOMSettableTokenList for {HTMLAnchorElement, HTMLAreaElement}.ping. - An open-source project to help move the web forward. - Google Project Hosting ( 版) https://code.google.com/p/chromium/issues/detail?id=498219
[11] Handling of url parsing errors in a.ping is undefined · Issue #477 · whatwg/html ( 版) https://github.com/whatwg/html/issues/477
[12] URLs are parsed and produce records · whatwg/html@30bc255 ( 版) https://github.com/whatwg/html/commit/30bc2557105ad62881ec9670f253febbc9761b44
[13] Adding [SameObject] to DOMTokenLists · whatwg/html@ec1dc4d ( 版) https://github.com/whatwg/html/commit/ec1dc4d4571c61cf0c0dfe3e562898635886b412
[14] Never send a referrer with hyperlink auditing pings · whatwg/html@faec3a5 ( 版) https://github.com/whatwg/html/commit/faec3a50ea181f322ab9819975e285ced34a0308
[40] Use the HTTPS state concept instead of "encrypted connection" · whatwg/html@1ee3316 ( 版) https://github.com/whatwg/html/commit/1ee3316caa1a5754f7bbd29c494842785f9a181b
[44] Fix #1089: don't send pings for non-http(s) URLs · whatwg/html@817da95 ( 版) https://github.com/whatwg/html/commit/817da9577b565e808d7af0295e1affc094887418
[45] Bug 156801 – Anchor element 'ping' property should only apply to http/https destinations ( 版) https://bugs.webkit.org/show_bug.cgi?id=156801
[46] Make a.ping and tableCell.headers strings, not DOMTokenLists ( (domenic著, )) https://github.com/whatwg/html/commit/7dd2e95b03edd19515c636152d63d3c74cb69d6f
[47] Make area.ping a string, not DOMTokenList ( (zcorpan著, )) https://github.com/whatwg/html/commit/da9e4cb7142277d609e6636a56a282f5aba15e5c
[48] Use URL's HTTP(S) scheme concept and define rel=icon better ( (annevk著, )) https://github.com/whatwg/html/commit/a932f7dfd5e50101db47a373cee27b04ed108934
[79] Align Fetch's destination concept with changes in Fetch (sideshowbarker著, ) https://github.com/whatwg/html/commit/5e8f96a85d182d36c177db0d6fdde58b4ded86d4