Различает ли перекрестное распределение ресурсов (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.