26

https://:www.domain-only-uses-https.com と www.domain-uses-both-http-and-https.com の 2 つのサイトがあります。

今、前者から後者のページで2つのajax GETリクエストを作成しています.1つは

https://www.domain-uses-both-http-and-https.com/some-path  (using the HTTPS scheme) 

そしてもう一つは

http://www.domain-uses-both-http-and-https.com/some-other-path (using the HTTP scheme)

そして、サーバー「www.domain-uses-both-http」の「Access-Control-Allow-Origin:」ヘッダーの値として「https://:www.domain-only-uses-https.com」を設定しました-および-https.com」。

しかし、現在、Chrome ではリクエスト 1 のみが許可されているようですが、リクエスト 2 は禁止されています。

私の質問は、「Access-Control-Allow-Origin」ヘッダーは HTTP と HTTPS を区別しますか? 私が自分自身を明確にしたことを願っています..

4

1 に答える 1

52

はい、HTTP と HTTPS のオリジンは異なります。

オリジンは、hostnameport、およびschemeの組み合わせです。

  http://foo.example.com:8080/
  ^^^^   ^^^^^^^^^^^^^^^ ^^^^
   ||           ||        ||
 scheme      hostname    port

これらのフィールドのすべてが 2 つのリソース間で一致するわけではない場合、リソースは異なるオリジンからのものです。したがって、HTTP スキームを使用してオリジンからリソースにアクセスできるか、HTTPS スキームを使用してオリジンからリソースにアクセスできるかを明示的に指定する必要があります。

一部のブラウザーでは、各応答で送信されるAccess-Control-Allow-Originオリジン (または ) をヘッダーに 1 つだけ含めることができます。*ただし、サーバーはリクエストのOriginヘッダーを検出し、CORS レスポンスで同じオリジンを送信できます。

于 2013-10-23T13:13:16.240 に答える