RSS

Masalah implementasi sederhana akses jarak jauh javascript AJAX cross-domain POST

Tanggal Publikasi:2022/11/12 11:06

Faktanya, masalahnya sangat sederhana. Anda dapat mengirim permintaan, dan server juga mengembalikan respons. Ini adalah mekanisme keamanan browser modern yang mencegah javascript lokal memproses respons. Konsol debug menunjukkan:

Akses ke XMLHttpRequest di 'https://ip.taotu.org/' dari asal 'null' telah diblokir oleh kebijakan CORS: Tidak ada tajuk 'Access-Control-Allow-Origin' pada sumber daya yang diminta.

Masalahnya adalah jika Anda memposting halaman lokal, browser akan secara otomatis menambahkan header, Origin: null, dan jika server tidak menambahkan header respons, Access-Control-Allow-Origin: * saat mengembalikan respons, atau header nilai yang dikembalikan oleh server sama dengan milik Anda Jika Asal di header yang dikirim tidak cocok, klien browser tidak akan menyerahkan data respons ke javascript untuk diproses, mengakibatkan kesalahan.

Solusi: Sebenarnya sangat sederhana, kode back-end server, kita hanya perlu memeriksa apakah data posting berisi informasi yang ditentukan (setara dengan kata sandi kita sendiri), jika ya, tambahkan Access-Control-Allow-Origin: *, agar klien dapat ditangani dengan benar.

Ringkasannya adalah bahwa permintaan lintas domain AJAX tidak diizinkan secara default, dan browser akan melarangnya. Server menilai apakah situasinya diperlukan, dan mengembalikan header respons Access-Control-Allow-Origin:* dan tidak apa-apa.

Minta kode javascript halaman:

var xhttp = new XMLHttpRequest();

xhttp.onreadystatechange = fungsi () {

if (this.readyState == 4 && this.status == 200) {

document.getElementById("queryipinfo").innerHTML =

this.responsText;

}

};

xhttp.open("POST", "https://ip.taotu.org", true);

xhttp.send('XX berasal dari permintaan jarak jauh XX'+ipdomain); //String sebelumnya yang ditambahkan oleh kode kunci setara dengan kata sandi kita sendiri

Kode pemrosesan sisi server:

Stream oPostData = Request.InputStream;

byte[] bPostByte=byte baru[oPostData.Length];

oPostData.Read(bPostByte, 0, (int)oPostData.Length);

string sPostIPDomain=Encoding.UTF8.GetString(bPostByte);

bool bFromRemote;

if (sPostIPDomain.StartsWith("XX berasal dari permintaan jarak jauh XX")) //kode kunci

{

bFromRemote=benar;

sPostIPDomain = Regex.Replace(sPostIPDomain,"XX berasal dari permintaan jarak jauh XX(.*)", "$1");

**********Kode yang Dihilangkan*********

if (bFromRemote) //Kode kunci untuk menilai apakah akan mengembalikan header

Response.AddHeader("Access-Control-Allow-Origin", "*"); //kode kunci

Omong-omong, solusi normalnya adalah menyetel Access-Control-Allow-Origin: * di header respons server untuk mengizinkan semua permintaan lintas domain, atau Access-Control-Allow-Origin: https://taotu.org untuk mengizinkan Permintaan yang dikirim oleh domain yang ditentukan digunakan oleh pengembangan jaringan normal, tetapi jika persyaratannya adalah permintaan domain yang dikirim secara lokal di rumah adalah alamat IP, dan itu bukan IP tetap, ini tidak dapat diselesaikan untuk waktu yang lama, jadi Saya menggunakan solusi sederhana ini.

Tujuan saya adalah untuk mengatur file .html statis di browser komputer lokal di rumah, dan mengaturnya sebagai beranda default. Setiap kali saya membuka browser, saya mengirim permintaan posting ke server jarak jauh melalui java, dan mengembalikan IP jaringan eksternal dan menampilkannya. Ada juga beberapa tautan situs web saya yang sering digunakan di halaman statis, serta mesin pencari tiga-dalam-satu.

Ini adalah halaman web kecil yang saya buat, selamat datang untuk mengunjungi atau mengaturnya sebagai beranda: https://ip.taotu.org

Masalah implementasi sederhana akses jarak jauh javascript AJAX cross-domain POST

komentar pengguna

Tambahkan komentar baru

verifikasi

188BET - 100%Bonus Deposit Hingga Rp500,000