Что означает эта ошибка 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 являются твиттеры, более подробную информацию о том, как работает файл, можно найти здесь.