Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Memintas Sekatan CORS untuk Permintaan AJAX Merentas Domain?

Bagaimanakah Saya Boleh Memintas Sekatan CORS untuk Permintaan AJAX Merentas Domain?

Patricia Arquette
Patricia Arquetteasal
2024-12-14 13:36:12545semak imbas

How Can I Bypass CORS Restrictions for Cross-Domain AJAX Requests?

Memuatkan Cross-Domain Endpoint dengan AJAX

Pengenalan

Sekatan perkongsian sumber silang (CORS) boleh menghalang permintaan AJAX untuk mendapatkan semula data daripada berbeza domain. Artikel ini mengkaji pendekatan alternatif untuk mengatasi pengehadan CORS.

Memahami Sekatan CORS

Disebabkan langkah keselamatan, penyemak imbas menguatkuasakan dasar asal yang sama, yang mengehadkan permintaan AJAX dalam domain yang sama. Permintaan kepada domain, subdomain, port atau protokol yang berbeza biasanya disekat.

Mengelakkan JSONP

Menggunakan JSONP untuk mendapatkan semula data merentas domain memerlukan pelayan memberikan respons dalam format skrip. Jika data yang dijangkakan ialah HTML, menggunakan JSONP tidak sesuai.

Penyelesaian Alternatif

1. Alternatif Proksi CORS:

  • CORS Di Mana-mana: Menambahkan pengepala CORS pada permintaan yang diproksi.
  • Apa jua Asal: Menyediakan akses JSONP merentas domain.
  • Proksi CORS : Proksi Node.js yang membolehkan permintaan CORS untuk sebarang laman web.

2. Melangkau Sekatan Asal Sama:

  • Menggunakan proksi pihak ketiga (tidak disyorkan kerana kebimbangan keselamatan).
  • Mencipta proksi bahagian belakang untuk mengendalikan permintaan merentas domain .

Proksi CORS Contoh

CORS Di Mana-mana:

$.ajaxPrefilter( function (options) {
  if (options.crossDomain && jQuery.support.cors) {
    var http = (window.location.protocol === 'http:' ? 'http:' : 'https:');
    options.url = http + '//cors-anywhere.herokuapp.com/' + options.url;
  }
});

Apa jua Asal:

$.ajaxSetup({
    scriptCharset: "utf-8",
    contentType: "application/json; charset=utf-8"
});

$.getJSON('http://whateverorigin.org/get?url=' + 
    encodeURIComponent('http://google.com') + '&callback=?',
    function (data) {
        console.log(" > " , data);
        $("#viewer").html(data.contents);
});

Kesimpulan

Pendekatan alternatif ini membenarkan permintaan AJAX merentas domain apabila permintaan langsung dihadkan oleh CORS. Memilih penyelesaian terbaik bergantung pada kes penggunaan khusus dan pertimbangan keselamatan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memintas Sekatan CORS untuk Permintaan AJAX 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