Ошибка «Небезопасная попытка 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.

Jhourlad Estrella
источник
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