Использует ли Cross-Origin Resource Sharing (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-uses- both-http-and-https.com".

Но теперь кажется, что Chrome только разрешен 1, но запрос 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.