3

(注: 関連する質問Can browsers react to Set-Cookie specified in headers in an XSS jquery.getJSON() request?も参照してください。 )

JSON 操作の要求ヘッダーにCookie (名前はmwLastWriteTime )を設定できないようです。リクエスト自体は、Freebase MQL チュートリアルからの単純なものであり、それ以外は正常に機能しています。

// Invoke mqlread and call the function below when it is done.
// Adding callback=? to the URL makes jQuery do JSONP instead of XHR.
jQuery.getJSON("http://api.sandbox-freebase.com/api/service/mqlread?callback=?",
{query: JSON.stringify(envelope)},   // URL parameters
displayResults);                     // Callback function

この Cookie を次のように設定できることを願っていました。

$.cookie('mwLastWriteTime', value, {domain: ".sandbox-freebase.com"});

残念ながら、送信要求ヘッダーで FireBug を見ると、次のようにしか表示されません。

Host    api.sandbox-freebase.com
User-Agent  [...]
Accept  */*
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive  115
Connection  keep-alive
Referer [...]

しかし、ドメインを指定しない場合 (またはリクエスト元サイトのドメインを明示的に指定した場合) はmwLastWriteTime、ローカル リクエストのヘッダーに表示される可能性があります。ドメインがこれらの Cookie を所有しているので.sandbox-freebase.com、GET と一緒に移動するべきではありませんか? それとも何らかの回避策が必要ですか?

私のコードはすべて JavaScript です。この Cookie を設定し、その後すぐに getJSON を呼び出したいと考えています。

4

2 に答える 2

5

クロスドメイン cookie を設定することはできません。これは、ブラウザー (したがってユーザー) を XSS 攻撃にさらすためです。

上記で参照したQuirksMode.org の記事から引用するには:

ドメインの目的は、Cookie がサブドメインを横断できるようにすることであることに注意してください。ドメインが www.quirksmode.org であるため、私の Cookie は search.quirksmode.org によって読み取られません。ドメインを quirksmode.org に設定すると、検索サブドメインも Cookie を読み取る場合があります。Cookie ドメインを自分が属していないドメインに設定できず、ドメインを www.microsoft.com にすることができません。この場合、quirksmode.org のみが許可されます。

Cookie 値を使用してクロスサイト リクエストを作成する場合は、制御するサーバーに特別なプロキシを設定する必要があります。これにより、値を Cookie 値として (おそらく POST パラメーターを介して) 送信できるようになります。また、プロキシが他の誰かの個人情報を「解放」する手段にならないように、適切に保護する必要があります。

于 2010-11-24T01:23:16.183 に答える
0

すべてのテストを localhost 経由で実行していますか? IEを使用していますか?もしそうなら、それは独自の特別なブランドのセキュリティ要件を強制し、あなたのクッキーをダンプする可能性があります. fiddler を開き、http://ipv4.fiddlerを使用してバイパスします。

そのような策略が行われていない場合 (FireFox を使用しているように見えるため)、Cookie のドメインを明示的に JSON 要求のドメインと同じに設定する必要がある場合もあります。ブラウザはドメイン A に設定された Cookie をドメイン B へのリクエストに送信しません。

于 2010-11-24T01:22:44.450 に答える