這次帶給大家怎麼實作js支援post請求跨域,實作js支援post請求跨域的注意事項有哪些,下面就是實戰案例,一起來看一下。
JSONP實作跨域
常用的jquery實作跨域呼叫
$.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); } });
這個呼叫實際上的實作原理是
在網頁中建構一個script標籤,將src設定為對應的url,並增加上對應的callback參數,形如下格式:
##reee js程式碼:
jQuery211018970995225637144_1465350372062({"id":"1","name":"tom"})#當瀏覽器取得到該區段js後來就會執行這個函數,從而實現回呼ajax請求時設定的success方法。jsonp實作的缺點
了解了原理後,就知道jsonp實作的跨域方式不支援post請求,只能支援get請求。但是如果需要支援post請求該怎麼辦呢?下面談談伺服器端設定的方式。
服務端設定支援跨域主要是Access-Control-Allow-Origin頭參數,該參數用來指定允許哪個來源的域請求。服務端程式碼如下:
$data = json_encode(array("id" => "1", "name" => "tom")); $callback = $_GET["callback"]; echo $callback . "(" . $data . ")";
對應的js程式碼:
// 表示支持所有来源的域进行请求 // 实际在操作过程中可以设置为指定域 header('Access-Control-Allow-Origin:*'); $data = json_encode(array("id" => "1", "name" => "tom")); echo $data;
可以支援post請求。
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
this指向與call、apply使用webpack myproject建置專案時ip無法存取應如何處理以上是怎樣實作js支援post請求跨域的詳細內容。更多資訊請關注PHP中文網其他相關文章!