Saya mengalami masalah domain silang dua hari yang lalu, dan dapat diselesaikan dengan menggunakan JSONP. (//www.vevb.com/article/57889.htm)
Saya sudah beres baru -baru ini:
1.Jsonp.
Permintaan AJAX, DataType adalah JSONP. Formulir ini membutuhkan permintaan untuk disesuaikan dengan formulir yang mengembalikan panggilan balik ([JSON-Object]) di sisi server. Jika server mengembalikan objek JSON normal. Kemudian ketika debugging, kesalahan "Sintakserror yang Tak Terbang: Token Tidak Terduga" akan dilaporkan pada konsol browser chrome; Kesalahan "Sintakserror: hilang; sebelum pernyataan" akan dilaporkan di konsol browser Firefox.
2.Frame Cross-domain.
Tambahkan elemen iframe ke halaman. Ketika Anda perlu menelepon permintaan GET, atur SRC IFRAME ke URL Permintaan Dapatkan untuk memulai panggilan ke permintaan GET.
Salinan kode adalah sebagai berikut:
var url = "http://xxx.xxx.xxx?p1=1&p2=2";
$ ("#iframe"). attr ("src", url); // cross-domain, gunakan iframe
Metode iframe lebih kuat dari JSONP. Selain dapat menangani permintaan HTTP, ia juga dapat menerapkan panggilan JS di seluruh domain.
3. Pemrosesan atribut SRC elemen skrip
Atribut SRC dari iframe, IMG, gaya, skrip, dan elemen lainnya dapat secara langsung meminta sumber daya dari berbagai domain. JSONP adalah implementasi sederhana dari sumber daya permintaan lintas domain menggunakan tag skrip. Oleh karena itu, ini pada dasarnya sama dengan JSONP, dan juga mengharuskan server untuk meminta formulir callback ...
Salinan kode adalah sebagai berikut:
var url = "http://xxx.xxx.xxx?p1=1";
var skrip = document.createElement ('Script');
script.setAttribute ('src', url);
document.geteLementsbyTagname ('head') [0] .AppendChild (skrip);
4. Gunakan Get Processing di server.
Bagi mereka yang tidak memiliki persyaratan yang kaku untuk diproses di front-end, mereka dapat merangkumnya di server dan kemudian memulai panggilan di server, yang dapat menyelesaikan masalah lintas domain. Kemudian, berdasarkan apakah permintaan dikeluarkan atau nilai pengembalian perlu diperoleh, kami akan memutuskan apakah kode menggunakan mode sinkron atau asinkron.
Salinan kode adalah sebagai berikut:
Private static void createGetHTtPresponse (string url, int? Timeout, string userAgent, cookiecollection cookies)
{
if (string.isnullorempty (url))
{
lempar argumentnullexception baru ("url");
}
var request = WebRequest.Create (url) sebagai httpwebRequest;
request.method = "get";
if (! string.isnullorempty (userAgent))
{
request.useragent = userAgent;
}
if (timeout.hasvalue)
{
request.timeout = timeout.value;
}
if (cookie! = null)
{
request.cookiecontainer = cookiecontainer baru ();
request.cookiecontainer.add (cookies);
}
request.begingetResponse (null, null); // asynchronous
// return request.getResponse () sebagai httpwebresponse;
}
5. Domain silang
Terlalu canggih ==, pelajari lagi
Ringkasan: 5 metode di atas adalah cara umum untuk menyelesaikan masalah domain silang JS. Yang terakhir relatif kelas atas. Mari kita menebusnya setelah saya mempelajarinya dengan jelas.