PostmanツールでCORSをテストしていますが、常に
access-control-allow-Origin → null
GET
またはOPTIONS
要求
http://localhost:4000/api/accounts?Host=http://localhost:4200/&X-Origin=http://jquery.com
また、X-Origin
の代わりにOrigin
を使用しても、結果は変わりません。一方、このようなcURLを使用すると
curl -H "Origin: http://jquery.com" --verbose http://localhost:4000/api/accounts
APIにアクセスできます
< access-control-allow-Origin: http://jquery.com
このコードを実行するために、http
とchrome Javascriptコンソールを使用してjQuery Webサイトを開きました。
$.get("http://localhost:4000/api/accounts").then(function(val){console.log(val);})
そして、APIによって返されたJSONオブジェクトを出力しました。
今、私の質問は次のとおりです。
Postmanを使用してCORSを適切にテストするにはどうすればよいですか?サーバーのオリジンの許可オプションを*
に設定すると、Postmanは
access-control-allow-Origin → *
上記の問題は、次のような一連の生成元を明示的に許可した場合にのみ発生します。
`Origin: ["https://www.getpostman.com/", "http://localhost:4200/", "http://jquery.com"]`
http://jquery.com/
の代わりにhttp://jquery.com
を許可すると、OriginがOrigin=http://jquery.com
である要求は許可されないことに気付きました。クライアントから送信されるOrigin
ヘッダーは、要求の発信元であるスキーム、ドメイン、およびポート(80でない場合)です。末尾の/
はヘッダーでは無効です。複数のオリジンを送信することもできません。 Access-Control-Allow-Origin
サーバーから送信される*
、すべてのオリジンを許可するか、リクエストヘッダーから同じオリジンを送り返します。
たとえば、http://www.telerik.com/
Chromeでは、リクエストヘッダーにOrigin:http://www.telerik.com
(ブラウザはこれを自動的に送信します)、サーバーからの応答ヘッダーにはAccess-Control-Allow-Origin:http://www.telerik.com
。
最後の質問に関しては、仕様によると、ユーザーエージェントはCORSを実施する責任があるため、cURLは要求と応答が一致することを検証しないと思われます。
ユーザーエージェントは、要求の発信元の値と発信元が一致することを検証します。
あなたが試すことができます
curl -Xオプション ' https://domain/path/file.png ' -H "Origin: https:// yoursitedomain " -H "Access-Control-Request -メソッド:GET "-v -o/dev/null