這篇文章給大家分享的是有關(guān)js跨域請求的方式有哪些的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
成都創(chuàng)新互聯(lián)公司公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站制作、做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元孟州做網(wǎng)站,已為上家服務(wù),為孟州各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108
JSONP實現(xiàn)跨域
常用的jquery實現(xiàn)跨域調(diào)用
$.ajax({ url: "http://127.0.0.1/~chenjiebin/mycode/php/crossdomain/index.php", dataType: "jsonp", jsonp: "callback", context: document.body, success: function(data) { console.log(data); } });
這個調(diào)用實際上的實現(xiàn)原理是
在網(wǎng)頁中構(gòu)造一個script標(biāo)簽,將src設(shè)置為對應(yīng)的url,并增加上相應(yīng)的callback參數(shù),形如如下格式:
請求的服務(wù)端代碼如下:
$data = json_encode(array("id" => "1", "name" => "tom")); $callback = $_GET["callback"]; echo $callback . "(" . $data . ")";
實際上最后返回的內(nèi)容就是一段js代碼:
jQuery211018970995225637144_1465350372062({"id":"1","name":"tom"})
當(dāng)瀏覽器獲取到該段js代碼后就會執(zhí)行這個函數(shù),從而實現(xiàn)回調(diào)ajax請求時設(shè)置的success方法。
jsonp實現(xiàn)的缺點
了解了原理后,就知道jsonp實現(xiàn)的跨域方式不支持post請求,只能支持get請求。但是如果需要支持post請求該怎么辦呢?下面談下服務(wù)器端設(shè)置的方式。
服務(wù)端設(shè)置支持跨域
主要是Access-Control-Allow-Origin頭參數(shù),該參數(shù)用來指定允許哪個來源的域請求。服務(wù)端代碼如下:
// 表示支持所有來源的域進(jìn)行請求 // 實際在操作過程中可以設(shè)置為指定域 header('Access-Control-Allow-Origin:*'); $data = json_encode(array("id" => "1", "name" => "tom")); echo $data;
對應(yīng)的js代碼:
$.ajax({ type: "POST", url: "http://127.0.0.1/~chenjiebin/mycode/php/crossdomain/header.php", dataType: "json", success: function(data) { console.log(data); } });
可以支持post請求。
感謝各位的閱讀!關(guān)于“js跨域請求的方式有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!