Ошибка «Небезопасная попытка JavaScript получить доступ к фрейму с URL…» в Chrome webkit Inspector постоянно генерируется.


129

Chrome (или любой другой браузер webkit) бросает тонну этих «небезопасных попыток JavaScript получить доступ к фрейму с URL ...», например, при работе с API Facebook.

Это не мешает реальной работе, но делает консоль javascript практически непригодной для использования.

Я хотел бы знать, есть ли способ подавить эти ошибки именно в консоли? Или, если вы, ребята, можете придумать другие решения, я был бы очень признателен.

Спасибо.


1
В настоящее время я использую обходной путь, просто установив вкладку консоли для отображения только журналов. Ищу решение, которое позволяет мне отслеживать ошибки (только не эту).
— Нил Саркар

было бы неплохо привести пример того, как вы используете API. есть много причин, по которым это могло произойти.
— Kinlan

Я знаю, что вы имеете в виду, но я почти уверен, что это происходит с любой интеграцией с Facebook. Например, откройте консоль webkit js на сайте Domino (в разработке) pizzaholdouts.com
— Нил Саркар

1
Разве вы просто не пробуете межсайтовый скриптинг? Вы запрашиваете адреса facebook api со своего сервера? Путь немного другой.
— Tomasz Durka

4
ничего не запрашивая, я просто вставил шаблонный материал, чтобы js sdk работал разработчиками
— Нил Саркар

Ответы:


19

Вы можете разрешить междоменные запросы во время тестирования, запустив Chrome с параметром --disable-web-securityкомандной строки. Это, вероятно, должно избавить от ошибки (и позволить FB шпионить за вашим тестированием;)


хм, это интригует ... есть ли способ установить эту опцию в стороне от командной строки? Я попробовал это из командной строки: /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-web-securityи вроде сработало! но он сказал, что не смог загрузить мой профиль ... есть идеи, как установить этот флаг из приложения или установить его по умолчанию?
— Neil Sarkar

4
в качестве обновления, теперь я использую исключительно хром, и мне все еще хотелось бы узнать ответ на этот вопрос
— Нил Саркар

2
open -a '/Applications/Google Chrome Canary.app' --args --disable-web-security
— Sandstrom

4

Это происходит, когда источник из другого домена загружается и пытается получить доступ к document.cookie. Это происходит с источниками заголовков (тегами скриптов), а также с документами iframe, которые по какой-то причине пытаются получить доступ к document.cookie.


4

В чем проблема?

Тонны Unsafe JavaScript attempt to access frame with URL...сообщений об ошибках в консоли Chrome JS.

Как указывает @thechrisproject , эти ошибки вызваны многими уважаемыми сторонними API и виджетами, включая, но не ограничиваясь:

  • Пакет SDK для Facebook JS
  • Встроить Vimeo Iframe
  • Встроенный iframe Google Maps

Мое понимание того, почему : (пожалуйста, поправьте меня, если я ошибаюсь)

Chrome имеет более строгие настройки безопасности и / или показывает больше таких ошибок, чем конкурирующие браузеры. Авторы API / виджетов / встраивания пытаются делать вещи (кросс-доменные / фреймовые), которые не будут работать во всех браузерах (возможно, для их собственных отчетов / аналитики), но которые на самом деле не влияют на удобство использования их виджета, если это не так. работа (просто вызывает много надоедливых ошибок)

Быстрый ответ

НЕТ, вы не можете ( просто ) подавить эти ошибки в консоли Chrome.

Решения?

  • Смирись с этим. Эти ошибки на самом деле не нарушают работу сторонних API и виджетов, они просто затрудняют использование консоли.
  • вы можете настроить консоль для регистрации только предупреждений, журналов или сообщений отладки. Это скроет ВСЕ ошибки.
  • вы можете использовать другой браузер
  • Как @Dagg_Nabbit. отметил , что вы можете разрешить междоменные запросы, запустив chrome с параметром --disable-web-securityкомандной строки. Дополнительная информация здесь: Отключите одинаковую политику происхождения в Chrome . Обратите внимание, что этот параметр отрицательно повлияет на безопасность вашего браузера. У меня есть 2 ярлыка Chrome, поэтому я могу открыть его с этим флагом или без него.

3

Поскольку мы не можем обвинять людей из Google в создании такого безопасного браузера, я думаю, что лучшим решением является использование серверных решений Facebook (например, PHP SDK), это сэкономит вам много, много, много, много, много головной боли. Единственное преимущество, которое я вижу в использовании FB javascript SDK, - это всплывающий вход в систему, который вы можете сделать самостоятельно, используя javascript / jQuery.


6
Почему использование PHP SDK (или другого SDK на стороне сервера) избавит от головной боли?
— Стив Хорн,

@steve: Тот факт, что Chrome блокирует небезопасный запрос, во многом отвечает на вопрос, насколько небезопасна обработка на стороне клиента.
— Jhourlad Estrella

2
IMHO загрязнение консоли JS не должно быть основным соображением при принятии решения о том, ставить ли логику на стороне сервера или на стороне клиента.
— Zach Lysobey

1
Производительность, безопасность, организация кода / ремонтопригодность, портативность - все, что я должен рассмотреть в первую очередь. stackoverflow.com/questions/1516852/…
— Зак Лисоби

2

Эти ошибки могут возникать, если при регистрации приложения в Facebook у вас нет косой черты в конце поля URL-адреса сайта. Другими словами, вам нужно " http://domain.com / », а не « http://domain.com ».

Вы можете проверить настройку URL-адреса сайта на странице developers.facebook.com/apps Edit settings -> Basic -> Site URL.


Не могли бы вы пояснить мне вашу фразу?
— itinance
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.