私は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を区別しますか?私が自分自身を明確にしたことを願っています。
はい、HTTPとHTTPSの発信元が異なります。
Originは、hostname、port、およびscheme。
http://foo.example.com:8080/
^^^^ ^^^^^^^^^^^^^^^ ^^^^
|| || ||
scheme hostname port
これらのフィールドのすべてが2つのリソース間で一致しない場合、リソースは異なるオリジンからのものです。したがって、リソースがHTTPスキームを使用するオリジンからアクセス可能かHTTPSスキームを使用するオリジンからアクセス可能かを明示的に指定する必要があります。
一部のブラウザでは、Access-Control-Allow-Origin
ヘッダーに各応答で送信されるオリジン(または*
)を1つだけ含めることができます。ただし、サーバーはリクエストのOrigin
ヘッダーを検出し、CORSレスポンスで同じオリジンを送信できます。