Что означает эта ошибка JavaScript? В доступе отказано в вызове метода для Location.toString

Эта ошибка только начала появляться на всем нашем сайте.

В доступе отказано в вызове метода для Location.toString

Я вижу сообщения в Google, которые предполагают, что это связано с flash и нашим crossdomain.xml. Что вызвало это, и как вы это исправили?

4 ответа

Решение

Используете ли вы JavaScript для связи между фреймами / фреймами, которые указывают на разные домены? Это не разрешено политикой безопасности JS "тот же источник / домен". Т.е. если есть

<iframe name="foo" src="foo.com/script.js">
<iframe name="bar" src="bar.com/script.js">

И скрипт на bar.com пытается получить доступ window["foo"].Location.toString, вы получите это (или аналогичные) исключения. Также обратите внимание, что та же политика происхождения также может применяться, если у вас есть контент из разных поддоменов. Здесь вы можете найти краткое и конкретное объяснение этого примерами.

Возможно, вы сталкивались с этой публикацией, но похоже, что обновление для системы безопасности флэш-памяти изменило поведение файла crossdomain.xml, требуя от вас указать политику безопасности, разрешающую отправку произвольных заголовков из удаленного домена. Статья базы знаний Adobe (также упоминается в оригинальном сообщении) находится здесь.

В этом посте предлагается добавить одну строку в файл crossdomain.xml.

<allow-http-request-headers-from domain="*" headers="*"/>

Вероятно, это вызвано изменением, внесенным в версию Flash Player, выпущенную в начале апреля, я не слишком уверен в деталях, но я предполагаю, что были проблемы безопасности с этой функциональностью.

Что вам нужно сделать, так это добавить это в свой файл crossdomain.xml (который должен быть в webroot на ваших серверах)

Вы можете прочитать больше здесь: http://www.adobe.com/devnet/flashplayer/articles/flash_player9_security_update.html

Типичным примером файла crossdomain.xml являются твиттеры, более подробную информацию о том, как работает файл, можно найти здесь.

Другие вопросы по тегам