最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解js跨域請(qǐng)求的兩種方式,支持post請(qǐng)求

 更新時(shí)間:2018年05月05日 12:45:51   投稿:mdxy-dxy  
原先一直以為要實(shí)現(xiàn)跨域請(qǐng)求只能用jsonp,只能支持GET請(qǐng)求,后來(lái)了解到使用POST請(qǐng)求也可以實(shí)現(xiàn)跨域,但是需要在服務(wù)器增加Access-Control-Allow-Origin和Access-Control-Allow-Headers頭,下面說(shuō)明下兩個(gè)不同的方法實(shí)現(xiàn)的方式和原理。

JSONP實(shí)現(xiàn)跨域

常用的jquery實(shí)現(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);
  }
});

這個(gè)調(diào)用實(shí)際上的實(shí)現(xiàn)原理是
在網(wǎng)頁(yè)中構(gòu)造一個(gè)script標(biāo)簽,將src設(shè)置為對(duì)應(yīng)的url,并增加上相應(yīng)的callback參數(shù),形如如下格式:

<script src="http://127.0.0.1/~chenjiebin/mycode/php/crossdomain/index.php?callback=jQuery211018970995225637144_1465350372062&_=1465350372063"></script>

請(qǐng)求的服務(wù)端代碼如下:

$data   = json_encode(array("id" => "1", "name" => "tom"));
$callback = $_GET["callback"];
echo $callback . "(" . $data . ")";

實(shí)際上最后返回的內(nèi)容就是一段js代碼:

jQuery211018970995225637144_1465350372062({"id":"1","name":"tom"})

當(dāng)瀏覽器獲取到該段js代碼后就會(huì)執(zhí)行這個(gè)函數(shù),從而實(shí)現(xiàn)回調(diào)ajax請(qǐng)求時(shí)設(shè)置的success方法。

jsonp實(shí)現(xiàn)的缺點(diǎn)

了解了原理后,就知道jsonp實(shí)現(xiàn)的跨域方式不支持post請(qǐng)求,只能支持get請(qǐng)求。但是如果需要支持post請(qǐng)求該怎么辦呢?下面談下服務(wù)器端設(shè)置的方式。

服務(wù)端設(shè)置支持跨域

主要是Access-Control-Allow-Origin頭參數(shù),該參數(shù)用來(lái)指定允許哪個(gè)來(lái)源的域請(qǐng)求。服務(wù)端代碼如下:

// 表示支持所有來(lái)源的域進(jìn)行請(qǐng)求
// 實(shí)際在操作過(guò)程中可以設(shè)置為指定域
header('Access-Control-Allow-Origin:*');
$data = json_encode(array("id" => "1", "name" => "tom"));
echo $data;

對(duì)應(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請(qǐng)求。

小結(jié)

實(shí)際上個(gè)人并不是特別喜歡用跨域請(qǐng)求的方式,可能會(huì)帶來(lái)一些不可預(yù)見(jiàn)的安全問(wèn)題。比較習(xí)慣的方式通過(guò)本域下的服務(wù)端和跨域的源服務(wù)器進(jìn)行交互。

相關(guān)文章

  • 微信小程序sessionid不一致問(wèn)題解決

    微信小程序sessionid不一致問(wèn)題解決

    這篇文章主要介紹了微信小程序sessionid不一致問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • js取滾動(dòng)條的尺寸的函數(shù)代碼

    js取滾動(dòng)條的尺寸的函數(shù)代碼

    js取滾動(dòng)條的尺寸的函數(shù)代碼,需要的朋友可以參考下。
    2011-11-11
  • JS setCapture 區(qū)域外事件捕捉

    JS setCapture 區(qū)域外事件捕捉

    鼠標(biāo)捕獲(setCapture)作用是將鼠標(biāo)事件捕獲到當(dāng)前文檔的指定的對(duì)象。這個(gè)對(duì)象會(huì)為當(dāng)前應(yīng)用程序或整個(gè)系統(tǒng)接收所有鼠標(biāo)事件。
    2010-03-03
  • JS模仿手機(jī)端九宮格登錄功能實(shí)現(xiàn)代碼

    JS模仿手機(jī)端九宮格登錄功能實(shí)現(xiàn)代碼

    這篇文章主要介紹了JS模仿手機(jī)端九宮格登錄功能實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下
    2016-04-04
  • JavaScript中你不知道的Object.entries用法

    JavaScript中你不知道的Object.entries用法

    大家應(yīng)該都知道,Object.entries()方法返回一個(gè)給定對(duì)象自身可枚舉屬性的鍵值對(duì)數(shù)組,其排列與使用 for...in 循環(huán)遍歷該對(duì)象時(shí)返回的順序一致,這篇文章主要給大家介紹了關(guān)于JavaScript中你不知道的Object.entries用法的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • js字符編碼函數(shù)區(qū)別分析

    js字符編碼函數(shù)區(qū)別分析

    js對(duì)文字編碼有3個(gè)函數(shù): escape,encodeURI,encodeURIComponent, 對(duì)應(yīng)的解碼函數(shù):unescape,decodeURI,decodeURIComponent
    2011-12-12
  • event.keyCode鍵碼值表 附只能輸入特定的字符串代碼

    event.keyCode鍵碼值表 附只能輸入特定的字符串代碼

    非常不錯(cuò)的應(yīng)用,讓文本框里只能輸入money大家看下具體的實(shí)現(xiàn)代碼,真是只有想到,原理很簡(jiǎn)單。
    2009-05-05
  • 在chrome中window.onload事件的一些問(wèn)題

    在chrome中window.onload事件的一些問(wèn)題

    在寫一些關(guān)于圖片操作的代碼的時(shí)候,一般都需要在圖片加載完成之后再執(zhí)行程序。然而在Chorme中(貌似Safari也是)對(duì)window.onload的理解與IE和FF有偏差。
    2010-03-03
  • 簡(jiǎn)單JS代碼壓縮器

    簡(jiǎn)單JS代碼壓縮器

    簡(jiǎn)單JS代碼壓縮器...
    2006-10-10
  • echarts大屏字體自適應(yīng)的方法步驟

    echarts大屏字體自適應(yīng)的方法步驟

    這篇文章主要介紹了echarts大屏字體自適應(yīng)的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07

最新評(píng)論

横山县| 永吉县| 华坪县| 扎囊县| 拜泉县| 烟台市| 渭源县| 班玛县| 临汾市| 乌鲁木齐县| 奇台县| 仁布县| 龙里县| 林州市| 句容市| 陇西县| 肥城市| 界首市| 翁牛特旗| 景谷| 宣恩县| 曲麻莱县| 玛曲县| 巴青县| 武隆县| 读书| 仁布县| 顺昌县| 皮山县| 乌兰浩特市| 库车县| 彰武县| 鄄城县| 开江县| 西贡区| 康平县| 成都市| 介休市| 杭州市| 上林县| 那坡县|