Rumah  >  Artikel  >  hujung hadapan web  >  Apakah sebab JavaScript merentas domain?

Apakah sebab JavaScript merentas domain?

WBOY
WBOYasal
2022-03-24 17:10:112445semak imbas

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.

Apakah sebab JavaScript merentas domain?

Persekitaran pengendalian tutorial ini: sistem Windows 10, versi JavaScript 1.8.5, komputer Dell G3.

Apakah sebab JavaScript merentas domain

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn