Rumah > hujung hadapan web > tutorial js > Ringkasan 5 cara untuk menangani js masalah silang domain_kemahiran javascript

Ringkasan 5 cara untuk menangani js masalah silang domain_kemahiran javascript

WBOY
Lepaskan: 2016-05-16 16:29:16
asal
1487 orang telah melayarinya

Saya menghadapi masalah merentas domain dua hari lalu, yang boleh diselesaikan menggunakan jsonp. (http://www.jb51.net/article/57889.htm)

Baru-baru ini menyelesaikannya:

1.jsonp.

Permintaan Ajax, dataType ialah jsonp. Borang ini memerlukan permintaan untuk dilaraskan pada bahagian pelayan untuk mengembalikan panggilan balik([json-object]). Jika pelayan mengembalikan objek json biasa. Kemudian apabila menyahpepijat, ralat "SyntaxError: Token tidak dijangka" akan dilaporkan dalam konsol penyemak imbas chrome, ralat "SyntaxError: missing; before statement" akan dilaporkan dalam konsol penyemak imbas firefox.

2.iframe merentas domain.

Tambahkan elemen iframe pada halaman Apabila anda perlu memanggil permintaan dapatkan, tetapkan src iframe kepada url permintaan get untuk memulakan panggilan permintaan dapatkan.

Salin kod Kod adalah seperti berikut:

var url = "http://xxx.xxx.xxx?p1=1&p2=2";
$("#iframe").attr("src", url);//Cross-domain, gunakan iframe

Kaedah iframe lebih kuat daripada jsonp Selain memproses permintaan http, ia juga boleh melaksanakan panggilan js merentas domain.

3. pemprosesan atribut src elemen skrip

Atribut src iframe, img, style, skrip dan elemen lain boleh meminta sumber secara langsung daripada domain yang berbeza jsonp ialah pelaksanaan mudah menggunakan teg skrip untuk meminta sumber merentas domain, jadi ini pada asasnya sama seperti jsonp dan juga. memerlukan panggilan balik permintaan sebelah pelayan... borang.

Salin kod Kod adalah seperti berikut:

var url="http://xxx.xxx.xxx?p1=1";
skrip var = document.createElement('skrip');
script.setAttribute('src', url);
document.getElementsByTagName('head')[0].appendChild(skrip);

4. Gunakan mendapatkan pemprosesan pada pelayan.

Untuk perniagaan yang tidak mempunyai keperluan tegar untuk pemprosesan bahagian hadapan, anda boleh merangkumnya di bahagian pelayan dan kemudian memulakan panggilan di bahagian pelayan, supaya masalah merentas domain dapat diselesaikan. Kemudian bergantung pada sama ada permintaan dihantar atau nilai pulangan perlu diperoleh, kod menggunakan mod segerak atau tak segerak.

Salin kod Kod adalah seperti berikut:

        kekosongan statik peribadi CreateGetHttpResponse(url rentetan, int? tamat masa, rentetan userAgent, kuki CookieCollection)
        {
            if (string.IsNullOrEmpty(url))
            {
                buang ArgumentNullException("url");
            }
            var request = WebRequest.Create(url) sebagai HttpWebRequest;
            request.Method = "DAPAT";
            jika (!string.IsNullOrEmpty(userAgent))
            {
                request.UserAgent = userAgent;
            }
            jika (masa tamat.HasValue)
            {
                permintaan.Tamat masa = tamat masa.Nilai;
            }
            jika (kuki != null)
            {
                request.CookieContainer = new CookieContainer();
                request.CookieContainer.Add(cookies);
            }
            request.BeginGetResponse(null,null);//异步
            //return request.GetResponse() sebagai HttpWebResponse;
        }

5.flash跨域

过于尖端了==,再研究

总结:以上5种方法就是常见的解决js跨域问题的处理方法了,最后一种比物了再补上吧。

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan