Chromeバージョン:57.0.2987
実際、古いChromeバージョンでは、この問題も発生します。アクセストークンを使用してリクエストヘッダーにAuthorization
を追加しました。
fetch('https://example.com/endpoint', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + accesstoken
}
})
私は常にAccess-Control-Allow-Headers:authorization
onResponse Headerin Chromeさらに、私のフェッチは常にRequestメソッドです:[〜#〜] options [〜#〜](GETは表示されません)、ChromeではStatus Code
は200OKです
しかし、Firefox(バージョン52.0.1)で同じフェッチコードを実行すると、すべてがうまく機能します。 リクエストヘッダーにAuthorization
を正しく追加できます。 Firefoxの応答ヘッダーにAccess-Control-Allow-Headers:authorization
は表示されません。 RequestヘッダーにAuthorization: Bearer accesstoken
が表示されます。
サーバー側は、リクエストヘッダーのCORSをすでに処理しています。
これはChromeバグまたは私のコード障害ですか?リクエストヘッダーでAuthorization
を作成するにはどうすればよいですか? -)Chromeで正しく?
下の画像は、Chrome開発ツールの詳細Networkです: (
以下の画像は、Firefox開発ツールの詳細Networkです: (
@stackdaveが言ったように、クロスドメインajaxの場合、ブラウザーはGETリクエストの前にOPTIONSリクエストを送信します。その後、ブラウザはサーバーの応答を待ちます。サーバーが応答しなかったので、ブラウザはOPTIONSステータスを停止するだけです。サーバーはこの問題を処理する必要があります。これはまだCORSの問題であり、APIのバグや問題をフェッチするものではありません。
ブラウザは、認証トークンなしでOPTIONSリクエストの前に送信し、次に実際のリクエストを送信します
http://www.w3.org/TR/cors/ 参照 http://metajack.im/2010/01/19/crossdomain-ajax-for-xmpp-http- binding-made-easy / もう少し詳しい情報