6

私は使用しています

xhrFields : { 
  withCredentials: true 
} 

jQuery $ajax 呼び出しで、クエリ内でセッション Cookie を送信します。

呼び出しにより、Apache ログに正しいステータス コード (Cookie が設定されているかどうかに応じて 401/200) が返されますが、Firefox は常に status=0 (つまり、$.ajax() のエラー) を受け取ります。この xhrFields セクションを削除すると、ステータスコードは問題ありません (ただし、Cookie は送信されません)

xhrFields を設定した Firefox で受け取る応答オブジェクトは次のとおりです。

{"readyState":0,"responseText":"","status":0,"statusText":"error"}

私のApache構成はCORS対応で、Access-Control-Allow-Credentialsも許可しています(対応するHTTPヘッダーは次のとおりです)

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *

AJAX 呼び出しまたは Web サーバーの構成で何か不足していますか?

注意: これは Chrome では問題なく動作します

4

1 に答える 1

10

おそらく、Access-Control-Allow-Origin ヘッダーを * よりも明示的に指定する必要があります。

https://developer.mozilla.org/En/HTTP_access_control#Requests_with_credentials言います:

重要な注意:認証されたリクエストに応答する場合、サーバーはドメインを指定する必要があり、ワイルドカードは使用できません。

于 2012-07-06T19:27:48.270 に答える