1. ホーム
  2. http

[解決済み] CORS Access-Control-Allow-Headers ワイルドカードが無視される?

2022-07-25 01:53:13

質問

Chrome を使用して、クロスドメイン CORS リクエストが正しく動作しないので困っています。

リクエストヘッダです。

Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:origin, content-type
Access-Control-Request-Method:POST
Connection:keep-alive
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4

レスポンスヘッダです。

Access-Control-Allow-Headers:*
Access-Control-Allow-Origin:*
Allow:GET, POST, OPTIONS
Content-Length:0
Date:Tue, 30 Oct 2012 20:04:28 GMT
Server:BaseHTTP/0.3 Python/2.7.3

エラーです。

XMLHttpRequest cannot load domain. Request header field Content-Type is not allowed by Access-Control-Allow-Headers.

そして、オプションのリクエストを提供するpythonのコードは、次のとおりです。

self.send_response(200)
self.send_header('Allow', 'GET, POST, OPTIONS')
self.send_header('Access-Control-Allow-Origin', '*')
self.send_header('Access-Control-Allow-Headers', '*')
self.send_header('Content-Length', '0')
self.end_headers()

どうやら Access-Control-Allow-Origin のワイルドカードが無視されているのでは?

どのように解決するのですか?

でのワイルドカードのサポート Access-Control-Allow-Headers ヘッダは に追加され、生活水準 に追加されたのは2016年5月なので、すべてのブラウザでサポートされているわけではありません。未実装のブラウザでは、完全一致である必要があります。 https://www.w3.org/TR/2014/REC-cors-20140116/#access-control-allow-headers-response-header

大量のヘッダが予想される場合は、ヘッダの値を読み込むために Access-Control-Request-Headers ヘッダの値を読み込んで、その値をエコーで返します。 Access-Control-Allow-Headers ヘッダーに返します。