18

xmlhttprequestでのCookieの管理を誤解したと思います。XMLHttpRequestMade in javascriptに応答するサーバーがあり、サーバーはAllow-Control-Access-Origin、、、およびヘッダーを正しい値でAccess-Control-Allow-Headers返します。Access-Control-Expose-HeadersAccess-Control-Allow-Credentials

私はjavascriptを使用してサーバーでダイジェスト認証を行っていますが、問題はありません。WWW-Authenticateサーバーからヘッダーを正常に受信し、すべてのダイジェスト応答とすべてが正常な認証ヘッダーを処理してサーバーに送信します。問題は、ダイジェストチャレンジが成功すると、サーバーがSet-Cookieヘッダーを返すので、それを取得して、残りのすべてのxhrリクエストに追加する必要があることです。ブラウザ(ChromiumとChromeを使用)では、次のようにしてヘッダーにアクセスできませんでした。

xhr.getResponseHeader("Set-Cookie");

OK、XMLHTTPREQUESTレベル2では、「フィールド名がSet-CookieまたはSet-Cookie2であるヘッダーを除いて、応答からすべてのヘッダーを返します」と書かれています。クッキーにChromeApiを使用しています(現時点ではそれについては読んでいません)が、可能な限り標準的な方法で実行したいと思います。とともに:

xhr.withCredentials = true;

ブラウザが自動的にset-cookieを取得し、cookieヘッダーを送信することを意味しますか?

4

1 に答える 1

16

CORS 仕様http://www.w3.org/TR/cors/#make-a-request-stepsから:

リクエストの作成手順が適用されるたびに、手動リダイレクト フラグが設定されたオリジン ソース origin からリクエスト URL をフェッチし、クレデンシャルの省略フラグが設定されている場合はブロック Cookie フラグが設定されます。作成者リクエスト ヘッダーを含むメソッド リクエスト メソッド、エンティティ ボディ リクエスト エンティティ ボディを使用し、資格情報の省略フラグが設定されていない場合はユーザー資格情報を含めます。ソースオリジンがグローバルに一意の識別子である場合は、Referer ヘッダーを除外します。

あなたが正しく言うように - を使用すると、ブラウザによって Cookie が追加されますwithCredentials

于 2012-06-12T15:01:39.890 に答える