Обработчик ошибок CORS в JavaScript

Фон

  • Несколько лет назад возникла проблема с тегами сценария onerror и перекрестного происхождения, подробнее об этом.

  • Основные браузеры исправили проблему.

  • Зная, что это проблема с обнаружением ошибок на стороне клиента из сценариев CDNed, они несколько ослабили эти ограничения (firefox, webkit)

Актуальный вопрос

Я размещаю простую страницу на localhost и включаю скрипт из другого домена (например, sitea), вот как выглядит HTML:

<html>
<head>
<script>window.onerror = function(e, f, g) { console.log('err',e,f,g) }</script>
</head>
<body><h2>test</h2>
<script src='http://siteA:8081/one.js' crossorigin='anonymous'></script>
</body>
</html>

Сценарий на siteA делает следующее:

var foo; foo.bar;

Очевидно, что это произойдет, поскольку bar не определен.

К сожалению, я все еще получаю "Ошибка сценария" в строке 0, как описано в билетах.

Обратите внимание, что я:

  • Установка атрибута crossdomain.

  • Видя заголовок "Origin" в запросе

  • Установка заголовка Access-Control-Allow-Origin на «*» и просмотр его в веб-инструментах разработки.

Пробовал и в firefox, и в хроме, не работает. У кого-нибудь есть идея, почему?


person Pablo Fernandez    schedule 19.06.2013    source источник
comment
Пабло, это должно работать в Firefox ... Я полагаю, вы используете последнюю версию, верно? Поддержка этого была добавлена ​​в Firefox 13.   -  person Boris Zbarsky    schedule 20.06.2013


Ответы (1)


У меня работает в Firefox 20 и Chrome поддерживает создание отчетов об ошибках из разных источников начиная с версии 30.

Вы можете видеть, что браузеры действительно отправляют заголовок Origin:, потому что тег <script> имеет атрибут crossorigin, а ошибка сообщается правильно, потому что сервер отвечает Access-Control-Allow-Origin: *.

person josh3736    schedule 19.06.2013