Различает ли перекрестное распределение ресурсов (CORS) HTTP и HTTPS?

У меня есть два сайта: https//:www.domain-only-uses-https.com и www.domain-uses-both-http-and-https.com

Теперь я делаю 2 запроса AJAX GET на странице первого к последнему, один

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)

И я установил "https//:www.domain-only-uses-https.com" в качестве значения "Access-Control-Allow-Origin:" заголовок на сервере "www.domain-use-both-http-and-https.com ".

Но теперь кажется, что только запрос 1 разрешен Chrome, а запрос 2 запрещен.

Итак, мой вопрос: различает ли заголовок "Access-Control-Allow-Origin" HTTP и HTTPS? Надеюсь, я ясно дал понять...

1 ответ

Да, происхождение HTTP и HTTPS различно.

Источник - это комбинация имени хоста, порта и схемы.

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

Если не все эти поля совпадают между двумя ресурсами, то ресурсы имеют различное происхождение. Таким образом, вы должны явно указать, доступен ли ресурс из источника по схеме HTTP или из источника по схеме HTTPS.

Некоторые браузеры позволяют только Access-Control-Allow-Origin заголовок должен содержать ровно одно происхождение (или * отправлено с каждым ответом; тем не менее, ваш сервер может обнаружить запрос Origin заголовок и отправить тот же источник в ответе CORS.

Другие вопросы по тегам