Ciągle generowany w Inspektorze webkitów Chrome błąd „Niebezpieczna próba uzyskania dostępu przez JavaScript do ramki z adresem URL…”

129

Chrome (lub jakakolwiek inna przeglądarka webkitów) generuje mnóstwo „Niebezpiecznych prób dostępu do ramki z adresem URL…” podczas pracy na przykład z Facebook API.

Nie koliduje z rzeczywistą obsługą, ale sprawia, że ​​konsola javascript jest praktycznie bezużyteczna.

Chciałbym wiedzieć, czy istnieje sposób na wyeliminowanie tych błędów, szczególnie w konsoli? A jeśli są inne rozwiązania, o których moglibyście pomyśleć, byłbym bardzo wdzięczny.

Dzięki.

Neil Sarkar
źródło
1
Obecnie używam obejścia polegającego na ustawieniu karty konsoli tak, aby wyświetlała tylko dzienniki. Szukam rozwiązania, które pozwoli mi śledzić błędy (tylko nie tego).
Neil Sarkar
dobrze byłoby przedstawić przykład tego, jak korzystasz z interfejsu API. istnieje wiele powodów, dla których może się to zdarzyć.
Kinlan,
Wiem, co masz na myśli, ale jestem pewien, że dzieje się tak przy każdej integracji z Facebookiem. Na przykład otwórz konsolę webkit js na tej stronie Domino (w produkcji) pizzaholdouts.com
Neil Sarkar
1
Czy nie próbujesz po prostu wykonywać skryptów między witrynami? Czy chcesz uzyskać adresy API Facebooka z własnego serwera? Droga jest trochę inna.
Tomasz Durka
4
nic nie zainteresowanie, po prostu umieścić w rzeczy boilerplate aby uzyskać js SDK działa developers.facebook.com/docs/reference/javascript
Neil Sarkar

Odpowiedzi:

19

Możesz zezwolić na żądania międzydomenowe podczas testowania, uruchamiając Chrome z --disable-web-securityopcją wiersza poleceń. To powinno prawdopodobnie pozbyć się błędu (i pozwolić FB na szpiegowanie twoich testów;)

Dagg Nabbit
źródło
hmm, to intrygujące ... czy istnieje sposób na ustawienie tej opcji w ten sposób poza wierszem poleceń? Próbowałem tego z wiersza poleceń: /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-web-securityi wydawało się, że działa! ale powiedział, że nie był w stanie załadować mojego profilu ... masz pomysł, jak ustawić tę flagę z poziomu aplikacji lub ustawić ją jako domyślną?
Neil Sarkar
4
jako aktualizacja używam teraz wyłącznie Chrome i nadal chciałbym poznać odpowiedź na to pytanie
Neil Sarkar,
2
open -a '/Applications/Google Chrome Canary.app' --args --disable-web-security
sandstrom
4

Dzieje się tak, gdy ładowane jest źródło z innej domeny i próbuje uzyskać dostęp do pliku document.cookie. Dzieje się tak ze źródłami głównymi (tagami skryptów), a także z dokumentami iframe, które z jakiegoś powodu próbują uzyskać dostęp do pliku document.cookie.

Celli
źródło
4

Jaki jest problem?

Mnóstwo Unsafe JavaScript attempt to access frame with URL...komunikatów o błędach w konsoli Chrome JS.

Jak wskazuje @thechrisproject , błędy te są powodowane przez wiele renomowanych interfejsów API i widżetów innych firm, w tym między innymi:

  • Pakiet Facebook JS SDK
  • Vimeo Iframe Embed
  • Umieść element iframe w Mapach Google

Moje zrozumienie, dlaczego : (proszę poprawić mnie, jeśli się mylę)

Chrome ma bardziej rygorystyczne ustawienia zabezpieczeń i / lub wyświetla więcej takich błędów niż konkurencyjne przeglądarki. Autorzy API / widżetów / osadzania próbują robić rzeczy (między domenami / ramkami), które nie będą działać we wszystkich przeglądarkach (prawdopodobnie dla ich własnych raportów / analiz), ale tak naprawdę nie wpływają na użyteczność ich widżetów, jeśli tak się nie dzieje praca (powoduje po prostu wiele irytujących błędów)

Szybka odpowiedź

NIE, nie możesz ( po prostu ) ukryć tych błędów w konsoli chrome.

Rozwiązania?

  • Sobie z tym poradzić. Te błędy w rzeczywistości nie psują interfejsów API i widżetów innych firm, po prostu sprawiają, że konsola jest znacznie trudniejsza w użyciu
  • można ustawić konsolę tak, aby rejestrowała tylko ostrzeżenia, dzienniki lub komunikaty debugowania. To ukryje WSZYSTKIE błędy.
  • możesz użyć innej przeglądarki
  • Jak @Dagg_Nabbit. wskazał , możesz zezwolić na żądania międzydomenowe, uruchamiając chrome z --disable-web-securityopcją wiersza poleceń. Więcej informacji tutaj: Wyłącz zasady tego samego pochodzenia w Chrome . Pamiętaj, że to ustawienie negatywnie wpłynie na bezpieczeństwo Twojej przeglądarki. Mam 2 skróty chrome, więc mogę go otworzyć z tą flagą lub bez.
Zach Lysobey
źródło
3

Ponieważ nie możemy winić ludzi z Google za zbudowanie tak bezpiecznej przeglądarki, myślę, że najlepszym rozwiązaniem jest użycie rozwiązań Facebooka po stronie serwera (np. PHP SDK), zaoszczędzi ci to dużo, dużo, dużo, dużo dużo bólu głowy. Jedyną zaletą, jaką widzę w korzystaniu z FB javascript SDK, jest wyskakujące okienko logowania, które możesz zrobić samodzielnie za pomocą javascript / jQuery.

Jhourlad Estrella
źródło
6
Dlaczego używanie PHP SDK (lub innego zestawu SDK po stronie serwera) zaoszczędzi wielu problemów?
Steve Horn
@steve: Sam fakt, że Chrome blokuje niebezpieczne żądania, wiele wyjaśnia, jeśli chodzi o niepewność przetwarzania po stronie klienta.
Jhourlad Estrella
2
Zanieczyszczenie konsoli JS przez IMHO nie powinno być głównym czynnikiem branym pod uwagę przy podejmowaniu decyzji, czy umieścić logikę po stronie serwera, czy po stronie klienta.
Zach Lysobey
1
Wydajność, bezpieczeństwo, organizacja / konserwacja kodu, przenośność - wszystko, co rozważę najpierw. stackoverflow.com/questions/1516852/…
Zach Lysobey
2

Te błędy mogą zostać wygenerowane, jeśli podczas rejestracji aplikacji na Facebooku nie ma końcowego ukośnika w polu Adres URL witryny. Innymi słowy, potrzebujesz „ http://domain.com / ”, a nie „ http://domain.com

Możesz sprawdzić ustawienie adresu URL witryny na stronie developers.facebook.com/apps Edytuj ustawienia -> Podstawowe -> Adres URL witryny.

Rob H.
źródło
Czy mógłbyś wyjaśnić mi swoje zdanie?
itinance