Не могли бы вы объяснить, почему у нас есть это сообщение CORS с deferredScript?
Поскольку Omnifaces по-видимому, использует XHR для запроса сценариев кросс-происхождения, а также браузеры по умолчанию блок XHR от делающих запросы перекрестную происхождения, но они не блокируют использование кросс-происхождения script
.
Обновление: См. Ответ BalusC. Удалил вышеуказанный абзац из этого ответа, потому что это неверно, что Omnifaces использует XHR. По ответам BalusC вместо этого он устанавливает crossorigin=anonymous
в элементе script
, так что большая часть остального этого ниже ответа не имеет значения.
Насколько почему браузеры обрабатывают XHR и script
иначе для запросов кросса происхождения:
Поскольку время script
элемента был впервые добавлен в HTML, это позволило встраиванию скрипты перекрестного происхождения между сайтами. Но в ретроспективе, если бы мы это делали снова, мы бы не разработали его таким образом, но вместо этого ограничили бы его, чтобы использовать сценарии только с одного и того же происхождения.
Но мы теперь застряли в script
, так как если бы мы изменили это поведение по умолчанию и вместо этого сделаем так, чтобы он не работал с перекрестным происхождением, это сломало бы миллионы существующих сайтов.
Update: Там сейчас crossorigin
атрибут для script
элемента, если он используется вызывает CORS, чтобы вступить в игру для script
во многом так же, как он делает для XHR и Fetch.
В отличии от к тому времени, когда X была добавлена к вебу выполнению, мы имели преимущество заднего числа и разработаны так, чтобы она не работала на все поперечному происхождение. Поэтому браузеры всегда по умолчанию блокируют любой запрос перекрестного происхождения, который работает JavaScript в веб-приложении с помощью XHR.
Впоследствии мы придумали CORS как способ смягчить это ограничение: если сайт сделал запрос на отправку заголовка ответа CORS Access-Control-Allow-Origin
, чтобы указать, что он выбирает получение запросов с кросс-началом, тогда браузеры будут блокировать запросы на кросс-начало для этого сайта.
Ваш 1-й абзац не соответствует действительности. Где именно вы видите это в исходном коде? – BalusC
Я никогда не смотрел исходный код, но из вашего ответа я вижу, что я ошибся, поэтому я удалю это. Спасибо, что позвонили мне. – sideshowbarker