Sebab merentas domain JavaScript ialah: sekatan dasar asal yang sama penyemak imbas, js nama domain semasa hanya boleh membaca atribut tetingkap dalam domain yang sama, jadi merentas domain berlaku. Dasar asal yang sama bermakna penyemak imbas melarang interaksi JS antara domain yang berbeza untuk memastikan keselamatan maklumat pengguna dan menghalang tapak web berniat jahat daripada mencuri data.
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi JavaScript 1.8.5, komputer Dell G3.
Masalah merentas domain adalah disebabkan oleh sekatan dasar asal yang sama bagi penyemak imbas atribut tetingkap dalam domain yang sama.
Disebabkan sekatan dasar asal yang sama penyemak imbas. Dasar asal yang sama ialah konvensyen Ia adalah teras dan fungsi keselamatan paling asas bagi penyemak imbas Jika dasar asal yang sama tiada, fungsi normal penyemak imbas mungkin terjejas. Boleh dikatakan bahawa Web dibina berdasarkan dasar asal yang sama. Penyemak imbas hanyalah pelaksanaan dasar asal yang sama. Dasar asal yang sama menghalang skrip JavaScript daripada satu domain daripada berinteraksi dengan kandungan daripada domain lain. Asal yang dipanggil sama (iaitu, dalam domain yang sama) bermakna kedua-dua halaman mempunyai protokol, hos dan nombor port yang sama.
Ringkasnya, dasar asal yang sama bermaksud untuk memastikan keselamatan maklumat pengguna dan menghalang tapak web berniat jahat daripada mencuri data, penyemak imbas melarang interaksi JS antara domain yang berbeza. Untuk penyemak imbas, selagi salah satu nama domain, protokol dan port adalah berbeza, dasar asal yang sama akan dicetuskan, dengan itu mengehadkan interaksi berikut antara mereka:
1 Cookies, LocalStorage dan IndexDB dibaca;
2.DOM tidak boleh diperolehi;
3.Permintaan AJAX tidak boleh dihantar.
Takrifan ketat bagi merentas domain ialah: selagi protokol, nama domain dan port berbeza, ia dianggap sebagai merentas domain.
Penyelesaian merentas domain
JSONP: Anda perlu menambah dataType: "jsonp" pada kaedah permintaan, //Format data ditetapkan kepada jsonp, jsonp: "panggilan balik" , //Jquery menjana nama parameter pengesahan
1 Parameter ini mesti ditetapkan kepada jsonp
2 nilai parameter ini dengan pelayan
nginx reverse proxy
Webpack configure reverse proksi: terus gunakan scaffolding devServer untuk mengkonfigurasi proksi songsang untuk menyelesaikan masalah merentas domain semasa proses pembangunan
Cross -perkongsian sumber domain (CORS)
nodejs merentas domain: Gunakan nodejs untuk menyediakan pelayan secara setempat Gunakan pelayan itu untuk memanggil pelayan bahagian belakang untuk mengembalikan data dan kemudian mengembalikannya ke bahagian hadapan tiada domain silang antara pelayan
domain silang protokol WebSocket
Melalui JSONP
Fahami sendiri: JSONP menggunakan atribut src tag skrip untuk mencapai domain silang Anda hanya boleh menggunakan permintaan dapatkan, dan latar belakang akan mengembalikan kaedah Anda lulus Kaedah ini mendapat data yang anda inginkan
Prinsip jsonp: Bahagian hadapan mentakrifkan kaedah dan menghantarnya. ke hujung belakang melalui atribut src Selepas hujung belakang mendapat kaedah, ia meneruskan kaedah penyambungan data dan kemudian menghantarnya ke hujung hadapan memanggilnya sebagai kaedah
JSONP terutamanya kaedah permintaan terkapsul yang menambah panggilan balik ini dipersetujui oleh bahagian hadapan dan belakang
Cadangan berkaitan: Tutorial pembelajaran javascript
Atas ialah kandungan terperinci Apakah sebab JavaScript merentas domain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!