5

xhr にヘッダーを追加したい。

setRequestHeader を使用すると、実際には Access-Control-Request-Headers に値が追加されます。

私がコーディングした場合:

xhr.setRequestHeader('key1', 'value1');
xhr.setRequestHeader('key2', 'value2');

リクエスト ヘッダーに表示されるのは、Access-Control-Request-Headers:accept, key1, key2 です。

代わりに期待するのは次のとおりです。

キー 1: 値 1

キー 2: 値 2

この合併を防ぐにはどうすればよいですか?ありがとう!

4

1 に答える 1

7

単純ではないクロスドメイン XMLHttpRequest を作成しています ( CORS の詳細については、こちらを参照してください)。これは、意図した要求の前に、ブラウザーがプリフライト ( OPTIONS) 要求を送信する必要があることを意味します。これは、異なるオリジンからのクライアントがその要求を行うことが許可されていることをサーバーで確認するために行われます。Access-Control-RequestCORS リクエストを作成している場合、ブラウザは送信時にリクエストにヘッダーを自動的に追加します。

Access-Control-Request-Headersヘッダーは、リクエストに含まれる単純でないヘッダーのコンマ区切りのリストです。設定できる「単純な」ヘッダーはAcceptAccept-LanguageContent-LanguageLast-Event-ID、およびContent-Type( application/x-www-form-urlencodedmultipart/form-data、またはのいずれかに設定されている場合text/plain) のみです。

サーバーは、応答内Access-Control-Requestの対応するヘッダーを使用して、プリフライト リクエスト内のこれらのヘッダーに応答する必要がありますAccess-Control-Allow。したがって、あなたの場合、 で応答する必要がありますAccess-Control-Allow-Headers: key1, key2

于 2014-04-30T14:24:02.243 に答える