30

XMLHttpRequestを使用してXSSリクエストにCookieを設定しようとしています。

XMLHttpRequest仕様を見つけました。セクション4.6.2-5は、Cookie、Cookie2、およびその他のヘッダーの設定が許可されていないことを示唆しているようですが、回避策があることを期待していました。

私の(jQuery)コードは以下のとおりですが、Cookieが設定されていないため、結果のクエリは失敗します。

$.ajax( {
  type : "POST",
  url : URL,
  data: SOAP_INBOX_MAIL_QUERY,
  dataType : "xml",
  async: false,
  beforeSend : function(xhr) {  
    var cookie = credentials["COOKIE"];
    console.info( "adding cookie: "+ cookie );          
    xhr.setRequestHeader('Cookie', cookie);
  },
  success : function(data, textStatus, xmLHttpRequest){


  },
  error : function(xhr, ajaxOptions, thrownError) {
    credentials = null;
  }
});
4

5 に答える 5

40

これを行うことができます。$.ajax呼び出しには次のものが必要です。

xhrFields: {
    withCredentials: true
}

(jQueryドキュメントを参照)。また、CORSをサポートするためにリクエストするサイトも必要です(少なくとも、オリジンを許可し、Access-Control-Allow-CredentialsHTTPヘッダーをに設定する必要がありますtrue)。

それが機能することは間違いありません。基本認証などを使用して、HTTPS経由で実行できます。(xhrFields)に指示すると、jQueryはすべて(認証ヘッダー、Cookie)を送信し、サイトは適切なCORSヘッダーを提供します。あきらめてはいけない!

于 2011-12-16T05:44:31.563 に答える
15

セキュリティ上の理由から、XMLHTTPRequest中にヘッダーを変更することはできません。

于 2010-02-23T17:09:34.497 に答える
4

document.cookieを使用してCookieを設定した場合、リクエストを送信すると、CookieヘッダーにCookieが含まれます。

于 2011-08-16T08:44:54.757 に答える
1

https://developer.mozilla.org/En/Server-Side_Access_Control

オリジンを許可し、Access-Control-Allow-CredentialsHTTPヘッダーをtrueに設定することもできます

于 2012-02-16T09:03:51.150 に答える
0

jqueryコードと同じドメインでリクエストする場合は、jquerycookiesプラグインを使用できます

于 2010-02-23T17:10:29.613 に答える