Использует ли 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.