(注: これは、私の質問Can jQuery.getJSON put a domain's cookies in the header of the request it make?へのフォローアップであり、AJAX リクエストで Cookie を設定するXSS ケースをカバーしています。 )
を使用して、現在のドメインのサブドメインではない他のドメインが Cookie を読み取るように設定できないと言われました$.cookie(..., ..., {domain: ...})
。しかし、私の最後の質問への回答に対するコメントで、@zanlok は「ただし、サーバーの返信は間違いなく Cookie を設定できる」と述べ、2 つの賛成票を獲得しました。
そこで、 Freebase の「touch」APIと呼ばれる Cookie を設定するという明確な目的のために作成されたサービスを使用してみようと考えました。呼び出しは次のようになります。
$.getJSON("http://api.sandbox-freebase.com/api/service/touch",
{}, // URL parameters
afterCookieIsSetCallback); // Callback function
応答ヘッダーで FireBug を見ると、次のようになります。
Date Wed, 24 Nov 2010 03:35:28 GMT
Server Apache
X-Metaweb-Cost [...]
Etag [...]
Expires Wed, 24 Nov 2010 03:35:29 GMT
Cache-Control no-store
Vary Accept-Encoding
Content-Encoding gzip
Set-Cookie mwLastWriteTime=1290569730|10325_9202a8c04000641f80000000199eff96|sandbox; expires=Thu, 25-Nov-2010 03:35:28 GMT; Path=/
Last-Modified Wed, 24 Nov 2010 03:35:28 GMT
Content-Length 134
Content-Type text/plain; charset=utf-8
X-Cache MISS from cache01.sandbox.sjc1.metaweb.com
Connection keep-alive
X-Metaweb-TID cache;cache01.sandbox.sjc1:8101;2010-11-24T03:35:28Z;0001
したがって、そこには間違いなく Set-Cookie があり、スクリプトは応答ハンドラーを実行します。しかし、このスクリプトが.sandbox-freebase.com
.
(対照的に、タッチ API の URL をアドレス バーに入力して読み込むだけで、今後の要求のために Cookie が設定されます。これは、他のタブにも適用されます。)
これは、「2007 年から 2009 年」頃に MetaWeb によって公開されたツールキットがあり、そのようなアプローチが機能すると思われるため、以前の「予想される動作」からの逸脱のようです。
それについてあまり知らないので、Firefox が採用した最近の変更であり、その後 WebKit がそれに続いたのではないかと思っています。おそらくここで言及されているもの:
http://trac.webkit.org/browser/trunk/WebCore/xml/XMLHttpRequest.cpp#L856
この特定の問題に関する正規のドキュメントはありますか?