1. ホーム
  2. express

[解決済み] リクエストヘッダーフィールドAccess-Control-Allow-Headersはプリフライトレスポンスでそれ自身は許可されません。

2022-03-17 01:43:38

質問

私はCORSの問題に何度も遭遇し、通常はそれを解決することができますが、MEANスタックのパラダイムからこれを見ることによって、本当に理解したいのです。

以前は、これらのことをキャッチするために Express サーバーにミドルウェアを追加しただけでしたが、私のリクエストをエラーにする何らかの事前フックがあるように見えます。

<ブロッククオート

リクエストヘッダーフィールドAccess-Control-Allow-HeadersがプリフライトレスポンスのAccess-Control-Allow-Headersで許可されていません。

できるものと思い込んでいました。

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Headers","*")
})

またはそれに相当するものを使っていますが、これでは直らないようです。もちろん

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Headers","Access-Control-Allow-Headers")
})

まだダメなのか。

どうすればいいですか?

カスタムリクエストヘッダーで遊び始めると、CORSプリフライトを取得することになります。これは、リクエストに HTTP OPTIONS 動詞があり、いくつかのヘッダを含んでいます。 Access-Control-Request-Headers は、クライアントがリクエストに含めたいヘッダをリストアップします。

そのCORSプリフライトに、適切なCORSヘッダを返信しないと、この動作はできません。そのうちの 1 つは、実際に Access-Control-Allow-Headers . このヘッダーには Access-Control-Request-Headers ヘッダーに含まれる(またはそれ以上)。

https://fetch.spec.whatwg.org/#http-cors-protocol では、この設定についてより詳しく説明しています。