"Upaya JavaScript yang tidak aman untuk mengakses frame dengan URL ..." kesalahan terus-menerus dihasilkan di inspektur Chrome webkit

129

Chrome (atau peramban webkit lain) melempar banyak "Upaya JavaScript yang Tidak Aman untuk mengakses bingkai dengan URL ..." saat bekerja dengan Facebook API misalnya.

Itu tidak mengganggu operasi yang sebenarnya, tetapi itu membuat konsol javascript pada dasarnya tidak dapat digunakan.

Saya ingin tahu apakah ada cara untuk menekan kesalahan ini khususnya di konsol? Atau jika ada solusi lain yang kalian pikirkan, saya akan sangat menghargainya.

Terima kasih.

Neil Sarkar
sumber
1
Saat ini saya menggunakan solusi hanya dengan mengatur tab konsol untuk menampilkan log saja. Saya mencari solusi yang memungkinkan saya untuk melacak kesalahan (tidak hanya yang ini).
Neil Sarkar
alangkah baiknya untuk memberikan sampel tentang bagaimana Anda menggunakan API. ada banyak alasan mengapa ini bisa terjadi.
Kinlan
Saya tahu maksud Anda, tapi saya cukup yakin ini terjadi dengan integrasi facebook apa pun. Sebagai contoh, buka konsol webkit Anda di situs Domino ini (sedang diproduksi) pizzaholdouts.com
Neil Sarkar
1
Bukankah Anda hanya mencoba skrip lintas situs? Apakah Anda meminta alamat api facebook dari server Anda sendiri? Cara agak berbeda.
Tomasz Durka
4
tidak meminta apa pun, saya hanya memasukkan barang-barang pelat untuk membuat js sdk berfungsi developer.facebook.com/docs/reference/javascript
Neil Sarkar

Jawaban:

19

Anda dapat mengizinkan permintaan lintas domain selama pengujian dengan menjalankan chrome dengan --disable-web-securityopsi baris perintah. Ini mungkin harus menghilangkan kesalahan (dan memungkinkan FB untuk memata-matai pengujian Anda;)

Dagg Nabbit
sumber
hmm itu menarik ... apakah ada cara untuk mengatur opsi seperti itu selain dari baris perintah? Saya mencoba ini dari baris perintah: /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-web-securitydan sepertinya berhasil! tetapi dikatakan tidak dapat memuat profil saya ... tahu cara mengatur bendera itu dari dalam aplikasi, atau mengaturnya secara default?
Neil Sarkar
4
sebagai pembaruan, saya sekarang menggunakan chrome secara eksklusif, dan saya masih ingin tahu jawabannya
Neil Sarkar
2
open -a '/Applications/Google Chrome Canary.app' --args --disable-web-security
sandstrom
4

Ini terjadi ketika sumber dari domain yang berbeda dimuat dan mencoba mengakses document.cookie. Ini terjadi dengan sumber kepala (tag skrip) juga dengan dokumen iframe yang mencoba mengakses dokumen.cookie karena beberapa alasan.

Celli
sumber
4

Apa masalahnya?

Banyak Unsafe JavaScript attempt to access frame with URL...pesan kesalahan di konsol Chrome JS.

Seperti yang ditunjukkan oleh proyek @thechris , kesalahan ini disebabkan oleh banyak api dan widget pihak ke-3 yang memiliki reputasi baik, termasuk tetapi tidak terbatas pada:

  • Facebook JS SDK
  • Vimeo Iframe Embed
  • Google Maps Iframe Embed

Pemahaman saya tentang alasannya : (tolong koreksi saya jika saya salah)

Chrome memiliki pengaturan keamanan yang lebih ketat dan / atau menunjukkan lebih banyak kesalahan seperti itu daripada browser yang bersaing. API / widget / penulis sematan mencoba melakukan hal-hal (lintas-domain / bingkai) yang tidak akan berfungsi di semua browser (mungkin untuk pelaporan / analitik mereka sendiri) tetapi itu tidak benar-benar mempengaruhi kegunaan widget mereka jika itu tidak bekerja (hanya menyebabkan banyak kesalahan yang mengganggu)

Jawaban cepat

TIDAK, Anda tidak dapat ( hanya ) menekan kesalahan ini di konsol chrome.

Solusi?

  • Menghadapinya. Kesalahan ini sebenarnya tidak merusak apis dan widget pihak ke-3 ini, mereka hanya membuat konsol jauh lebih sulit untuk digunakan
  • Anda dapat mengatur konsol untuk hanya mencatat pesan Peringatan, Log, atau Debug. Ini akan menyembunyikan SEMUA kesalahan.
  • Anda dapat menggunakan browser lain
  • Sebagai @Dagg_Nabbit. ditunjukkan , Anda dapat mengizinkan permintaan lintas-domain dengan menjalankan chrome dengan --disable-web-securityopsi baris perintah. Informasi lebih lanjut di sini: Nonaktifkan kebijakan asal yang sama di Chrome . Perhatikan bahwa pengaturan ini akan berdampak negatif terhadap keamanan browser Anda. Saya memiliki 2 pintasan chrome sehingga saya dapat membukanya dengan atau tanpa bendera ini.
Zach Lysobey
sumber
3

Karena kita tidak dapat menyalahkan orang-orang dari Google untuk membangun peramban yang aman, saya pikir solusi terbaik adalah dengan menggunakan solusi sisi-server Facebook (mis. PHP SDK), itu akan menghemat banyak, banyak, banyak, banyak, banyak sakit kepala. Satu-satunya keuntungan yang saya lihat dalam menggunakan FB javascript SDK adalah login popup yang dapat Anda lakukan sendiri menggunakan javascript / jQuery.

Jhourlad Estrella
sumber
6
Mengapa menggunakan PHP SDK (atau SDK sisi server lainnya) menyimpan banyak sakit kepala?
Steve Horn
@steve: Fakta bahwa Chrome memblokir permintaan yang tidak aman menjawab banyak hal tentang bagaimana pemrosesan sisi klien yang tidak aman.
Jhourlad Estrella
2
Polusi IMHO dari konsol JS tidak boleh menjadi pertimbangan utama dalam memutuskan apakah akan menempatkan sisi server logika atau sisi klien.
Zach Lysobey
1
Kinerja, Keamanan, Kode Organisasi / Maintainability, portabilitas - semua hal yang saya pertimbangkan terlebih dahulu. stackoverflow.com/questions/1516852/…
Zach Lysobey
2

Kesalahan ini dapat terjadi jika, ketika Anda mendaftarkan aplikasi Anda dengan Facebook, Anda tidak memiliki garis miring di bidang URL Situs. Dengan kata lain, Anda perlu " http://domain.com / " not " http://domain.com "

Anda dapat memeriksa pengaturan URL Situs dari developers.facebook.com/apps Edit pengaturan -> Dasar -> URL Situs.

Rob H
sumber
Bisakah Anda menjelaskan kalimat Anda kepada saya?
itinance