web-dev-qa-db-ja.com

クロスオリジンリソースシェアリング(CORS)はHTTPとHTTPSを区別しますか?

私は2つのサイトを持っています:https //:www.domain-only-uses-https.comとwww.domain-uses-both-http-and-https.com

現在、前者から後者のページで2つのajaxGETリクエストを行っています。1つは

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

もう1つは

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

そして、I DID "https //:www.domain-only-uses-https.com"をサーバーの "Access-Control-Allow-Origin:"ヘッダーの値として設定します " www.domain-uses-both-http-and-https.com "。

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

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

20
NextStep

はい、HTTPとHTTPSの発信元が異なります。

Originは、hostnameport、およびscheme

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

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

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

31
apsillers