婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 使用HTML5中postMessage知識點解決Ajax中POST跨域問題

使用HTML5中postMessage知識點解決Ajax中POST跨域問題

熱門標簽:老虎郵局地圖標注點 目標三維地圖標注 百靈鳥 外呼系統獲取客戶手機號 科智聯智能電銷機器人 襄陽外呼系統接口 上海浦東百度地圖標注中心注冊 徐州電銷卡外呼系統供應商 青海醫療智能外呼系統怎么樣

由于同源策略的限制,Javascript存在跨域通信的問題,典型的跨域問題有iframe與父級的通信等。常規的幾種解決方法:

(1) document.domain+iframe; (2) 動態創建script; (3) iframe+location.hash; (4) flash。

postMessage是HTML5為解決js跨域問題而引入的新的API,允許多個iframe/window跨域通信。

HTML5中提供了在網頁文檔之間相互接收與發送信息的功能。使用這個功能,只要獲取到網頁所在窗口對象的實例,不僅僅同源(域+端口號)的web網頁之間可以互相通信,甚至可以實現跨域通信。

瀏覽器支持程度:IE8+,firefox4+,chrome8+  opera10+

1. 首先,要想接收從其他的窗口發過來的消息,就必須對窗口對象的message事件進行監聽,如下代碼:

復制代碼 代碼如下:

window.addEventListener(“message”, function(){},false);

2. 其次,需要使用window對象的postMessage方法向其他窗口發送消息,該方法定義如下所示:

復制代碼 代碼如下:

otherWindow.postMessage(message, targetOrigin);

該方法使用2個參數,第一個參數為所發送的消息文本,但也可以是任何javascript對象,第二個參數是接收消息的對象窗口的url地址(比如:http:127.0.0.1:8080/) , 但是我們也可以在url地址字符串中使用通配符”*”, 指定全部的域下,但是我們還是建議使用特定的域名下,otherWindow為要發送窗口對象的引用。

Demo演示:

假如現在我在hosts文件下 ,綁定2 個域名如下:

127.0.0.1       abc.example.com
127.0.0.1        longen.example.com

現在假如在abc.example.com域下有一個abc.html頁面,在longen.example.com域下有def.html頁面,現在我是希望這2個不同域名下的頁面能互相通信,abc.html代碼如下:

form> 
   p> 
    label for="message" style="color:red;font-size:24px;">給iframe子窗口發一個信息:/label> 
    input type="text" name="message" value="send" id="message" /> 
    input type="submit" value="submit" id="submit"/> 
   /p> 
/form> 
h4>目標iframe傳來的信息:/h4> 
p id="test">暫無信息/p> 
 iframe id="iframe" 
  src="http://longen.example.com/webSocket/def.html" style="display:none">/iframe>

JS代碼如下:

var win = document.getElementById("iframe").contentWindow;
document.getElementById("submit").onclick = function(e){
  e.preventDefault();
  win.postMessage(document.getElementById("message").value,"http://longen.example.com"); 
} 
window.addEventListener("message",function(e){
   e.preventDefault();
   document.getElementById("test").innerHTML = "從" + e.origin + "那里傳過來的消息:\n" + e.data;
},false);

Def.html代碼如下:

HTML代碼:

form> 
   p> 
    label for="message">給父窗口abc.html發個信息:/label> 
    input type="text" name="message" value="send" id="message" /> 
    input type="submit" /> 
   /p> 
 /form> 
 p id="test2">暫無信息。/p>

JS代碼如下:

var parentwin = window.parent; 
window.addEventListener("message",function(e){
    document.getElementById("test2").innerHTML = "從父窗口傳來的域" +e.origin + ",和內容數據:" + e.data; 
    parentwin.postMessage('HI!你給我發了"span>'+e.data+'"/span>。',"http://abc.example.com");
},false);

當我點擊abc.html頁面后,可以看到效果如下,從def.html返回內容了。如下:

我們需要知道如下幾條信息:

通過對window對象的message事件進行監聽,可以接收消息。
通過訪問message事件的origin屬性,可以獲取消息的發送源。
通過訪問message事件的data屬性,可以取得消息內容。
使用postMessage方法發送消息。
通過訪問message事件的source屬性,可以獲取消息發送源的窗口對象(準確的說,應該是窗口的代理對象)。
有了上面的基本知識點,我們可以延伸為實現ajax POST跨域的問題。

二:使用postMessage 知識點解決 ajax中POST跨域問題。

原理:原理也很簡單,假如我們的域名abc.example.com下的abc.html頁面需要發ajax請求(跨域,域名為longen.example.com)下,那么我們還是先跨頁面文檔的形式,和上面一樣,我們可以現在longen.example.com下 建立一個頁面,比如叫def.html. 那么我們現在還是在 abc.html 頁面嵌入一個隱藏域iframe src路徑指向longen.example.com域下def,html頁面。過程還是和跨文檔類似,只是現在在def.html頁面中 在window.onmessage 事件內寫ajax請求即可,如下代碼:

abc.example.com下的abc.html頁面如下:

html代碼和上面一樣,下面是JS代碼:

var win = document.getElementById("iframe").contentWindow;
document.getElementById("submit").onclick = function(e){
   e.preventDefault();
   win.postMessage(document.getElementById("message").value,"http://longen.example.com/"); 
} 
window.addEventListener("message",function(e){
  e.preventDefault();
  alert(typeof e.data)
  var json = JSON.parse(e.data);
   console.log(json);
  alert(json.url)
},false);

def.html代碼如下:

JS代碼如下:

//獲取跨域數據 
window.onmessage = function(e){ 
   $.ajax({
     url: 'http://longen.example.com/webSocket/test.php',
     type:'POST',
     dataType:'text',
     //data: {msg:e.data},
     success: function(res) {
        var parentwin = window.parent; 
        parentwin.postMessage(res,"http://abc.example.com");//跨域發送數據 
     }
   });
 };

test.php代碼如下:

?php 
  $data=array( 
   url =>1,
   name =>'2',
   'xx-xx'=>"xx"
 );
 echo json_encode($data);
?>

如上實現方式 就可以實現ajax post跨域了。

以上內容是關于使用HTML5中postMessage知識點解決Ajax中POST跨域問題的相關介紹,希望大家喜歡。

您可能感興趣的文章:
  • JQuery Ajax 跨域訪問的解決方案
  • 在Ajax中使用Flash實現跨域數據讀取的實現方法
  • 跨域請求之jQuery的ajax jsonp的使用解惑
  • 利用iframe實現ajax跨域通信的實現原理(圖解)
  • JQuery的Ajax跨域請求原理概述及實例
  • 完美解決AJAX跨域問題
  • 用iframe設置代理解決ajax跨域請求問題
  • jquery的ajax和getJson跨域獲取json數據的實現方法
  • jquery跨域請求示例分享(jquery發送ajax請求)
  • JavaScript使用HTML5的window.postMessage實現跨域通信例子
  • ajax跨域請求js拒絕訪問的解決方法
  • IE9版本以下ajax 跨域問題可行解決方法
  • VC中SendMessage和PostMessage的區別
  • VC自定義消息響應函數postmessage用法示例

標簽:商洛 紅河 股票 咸寧 荊州 揭陽 佛山 辛集

巨人網絡通訊聲明:本文標題《使用HTML5中postMessage知識點解決Ajax中POST跨域問題》,本文關鍵詞  使用,HTML5,中,postMessage,知識點,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用HTML5中postMessage知識點解決Ajax中POST跨域問題》相關的同類信息!
  • 本頁收集關于使用HTML5中postMessage知識點解決Ajax中POST跨域問題的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲成人免费av| 欧美日韩在线亚洲一区蜜芽| 成人黄色小视频| 欧美高清dvd| 国产清纯美女被跳蛋高潮一区二区久久w| 精品动漫一区二区三区在线观看| 亚洲婷婷国产精品电影人久久| 国产精品电影一区二区三区| 亚洲高清久久久| 奇米影视在线99精品| 精品亚洲成a人在线观看| 成人avav在线| 91免费国产视频网站| 2021久久国产精品不只是精品| 国产99精品在线观看| 秋霞影院一区二区| 日韩二区在线观看| 91精品国产91久久久久久最新毛片| 丰满少妇久久久久久久| 91香蕉视频黄| 91.xcao| 一本大道综合伊人精品热热| 成人黄色av网站在线| 日韩成人av影视| 成人性生交大片免费看视频在线| 国产·精品毛片| 欧美影视一区在线| 日韩欧美专区在线| 久久久精品国产免费观看同学| 亚洲一区免费在线观看| 欧美aaaaa成人免费观看视频| 奇米一区二区三区| 色狠狠综合天天综合综合| 欧美人狂配大交3d怪物一区| 国产精品无人区| 另类人妖一区二区av| 一本色道**综合亚洲精品蜜桃冫| 日韩一区二区三区av| 一二三四区精品视频| 国产在线播放一区| 欧美一区二区免费视频| 中文字幕一区二区三区四区| 7777精品久久久大香线蕉| 韩国精品一区二区| 国产一区二区免费看| 日本欧美一区二区在线观看| 亚洲精品亚洲人成人网在线播放| 欧美高清一级片在线| 成人国产精品免费网站| 国产性天天综合网| 精品一区二区三区不卡 | 国产一区欧美二区| 国产91精品一区二区麻豆网站 | 美女被吸乳得到大胸91| 国产成人无遮挡在线视频| 欧美v亚洲v综合ⅴ国产v| 首页亚洲欧美制服丝腿| 91精品久久久久久蜜臀| 美女被吸乳得到大胸91| 国产欧美精品一区二区色综合朱莉| 国产精品 欧美精品| 国产精品色在线| 欧美系列亚洲系列| 国产精品久久久久久久裸模| 在线观看亚洲一区| 国模大尺度一区二区三区| 国产精品乱人伦| 欧美日韩亚洲高清一区二区| 国产精品美女一区二区三区| 欧亚一区二区三区| 国产精品一区二区不卡| 国产精品毛片大码女人| 4438x亚洲最大成人网| 成人av免费观看| 国产精华液一区二区三区| 奇米影视一区二区三区| 综合在线观看色| 国产精品一区二区男女羞羞无遮挡 | 亚洲男人的天堂av| 图片区日韩欧美亚洲| 精品一区二区精品| 五月天久久比比资源色| 精品国产91洋老外米糕| 欧美日韩黄视频| 在线免费亚洲电影| 99久久国产综合精品麻豆| 奇米影视7777精品一区二区| 亚洲成av人影院在线观看网| 亚洲三级免费电影| 日韩一区中文字幕| 国产欧美精品国产国产专区| 久久亚洲精华国产精华液| 日韩一级高清毛片| 精品91自产拍在线观看一区| 日本道精品一区二区三区| 成人免费av在线| 粉嫩av一区二区三区粉嫩| 国产乱码字幕精品高清av| 国产精品亚洲午夜一区二区三区 | 国产精品资源在线观看| 久久精品国产秦先生| 亚洲综合色视频| 午夜一区二区三区在线观看| 91麻豆精品国产91久久久久久久久 | 亚洲国产成人av网| 有码一区二区三区| 亚洲国产精品麻豆| 免费在线观看视频一区| 一区二区久久久久久| 亚洲黄色在线视频| 亚洲成人免费看| 国产精品小仙女| 欧美图区在线视频| 日韩欧美在线网站| 国产精品久久免费看| 国产日韩欧美a| 日本成人中文字幕| 91色porny在线视频| 久久看人人爽人人| 爽爽淫人综合网网站| 日本道精品一区二区三区| 国产亚洲一区二区三区| 日韩有码一区二区三区| 在线观看日韩电影| 亚洲免费视频成人| av激情综合网| 亚洲色图.com| 91天堂素人约啪| 国产精品色一区二区三区| 国产一区二区三区黄视频 | 欧美日韩色一区| 九九精品视频在线看| 免费的成人av| 精品国产一区二区三区不卡| 久草在线在线精品观看| 亚洲一区二三区| 亚洲精品水蜜桃| 人人爽香蕉精品| 国产精品一区二区果冻传媒| 韩国三级电影一区二区| 亚洲视频一区二区在线| 亚洲欧洲无码一区二区三区| 中文字幕国产一区| 精品一区二区成人精品| 蜜桃精品在线观看| 美洲天堂一区二卡三卡四卡视频| 精品盗摄一区二区三区| 欧美日韩一区二区在线观看 | 亚洲综合色区另类av| 欧美日韩色综合| 午夜精品久久久久| 视频在线在亚洲| 国v精品久久久网| 欧美一区二区视频网站| 欧美成人精品福利| 国产女人18毛片水真多成人如厕| 国产精品久久久久久久久晋中| 一区二区三区精密机械公司| 色综合久久综合网欧美综合网| 麻豆精品在线播放| 中文字幕一区二区在线观看| 91美女视频网站| www.欧美日韩| 成人免费视频免费观看| 青青青爽久久午夜综合久久午夜| 亚洲欧美综合网| 国产精品国产馆在线真实露脸 | 欧美视频中文一区二区三区在线观看| 精品一区免费av| 天天爽夜夜爽夜夜爽精品视频| 中文字幕欧美日本乱码一线二线 | 日日夜夜免费精品视频| 精品国产免费人成在线观看| 色综合久久天天| 成人丝袜高跟foot| 成人网男人的天堂| 高清不卡一区二区| a级精品国产片在线观看| 日韩av中文在线观看| 午夜日韩在线电影| 亚洲一区二区欧美| 伦理电影国产精品| 精彩视频一区二区| 青青草国产精品97视觉盛宴| 欧美色网一区二区| 日韩欧美一级特黄在线播放| 日韩欧美一二区| 日本一区二区综合亚洲| 欧美精品一区二| 中文字幕永久在线不卡| 视频一区视频二区中文| 日本免费新一区视频| 日本成人中文字幕| 国精产品一区一区三区mba视频| 国产麻豆视频一区二区| 国产不卡在线播放| 日本特黄久久久高潮 | 91麻豆精品国产91久久久久久久久| 蜜桃久久久久久| 国产美女精品在线|