国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > AJAX > 正文

Ajax跨域的完美解決方案

2024-09-01 08:27:32
字體:
供稿:網(wǎng)友

公司要做一個活動頁面,在其過程中發(fā)現(xiàn)所有的接口,ajax請求跨域。這里對跨域做個簡單介紹以及提供幾種解決辦法。

  由于瀏覽器實現(xiàn)的同源策略的限制,XmlHttpRequest只允許請求當(dāng)前源(域名、協(xié)議、端口)的資源,所以AJAX是不允許跨域的。這里提供自己常用的三種方法:

1、jsonp訪問

  JSONP(JSON with Padding)是一個非官方的協(xié)議,它允許在服務(wù)器端集成Script tags返回至客戶端,通過javascript callback的形式實現(xiàn)跨域訪問;

實現(xiàn)方式

  1)

<script type="text/javascript">   $.ajax({     url:url,     dataType:'jsonp',     data:'',     jsonp:'callback',     success:function(result) {     },   }); </script> 

  2)

$.getJSON(url+"?callback=?",   function(result) {   });

注:1】 jsonp只能用get請求,哪怕你用了post請求,也會自動給你轉(zhuǎn)換成post;

  2】 jsonp 不僅可以用來獲取數(shù)據(jù),也可以用來提交數(shù)據(jù)。

2、damain 方法

  在主域相同,子域不同的情況下可以用這種方法,修改域名指向,讓他們指向同一域名,這種辦法也只能解決主域相同而二級域名不同的情況,兩個毫無關(guān)系的網(wǎng)址是不可以用這種方法的;

document.domain = 'a.com'

注:在實際開發(fā)中,很多人會在本地調(diào)試接口,localhost的域名和公司的域名完全不一樣,所有用了domain這種辦法也無法產(chǎn)生效果,解決辦法是修改c盤里的host文件,把本地地址localhost修改成公司域名或者公司二級域名,然后這種方法就可以使用了。

下面是修改的域名指向:

#127.0.0.1  localhost
127.0.0.1   公司.com

3、postMessage

  postMessage是h5的一個新功能之一,由于我們是一家做h5游戲的公司,不可避免的要嵌套iframe,方便數(shù)據(jù)提交等。

  這里假設(shè),iframe的Id為 ‘iframe';

  在iframe里面的js里要寫上

var message = 'date';<br>if (parent.document.getElementById(‘iframe‘)) {          //捕獲iframe          var iframe = parent.document.getElementById(‘iframe').contentWindow;          //發(fā)送消息          parent.postMessage(message, "*");        }

  在iframe外面的js里要寫上

window.addEventListener('message',function(e){      },false);

  然后就可以拿到message的數(shù)據(jù)了。

以上所述是小編給大家介紹的Ajax跨域的完美解決方案,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對錯新站長站網(wǎng)站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 葵青区| 普格县| 衡南县| 仪征市| 赫章县| 四子王旗| 济宁市| 饶平县| 锡林郭勒盟| 定西市| 得荣县| 车险| 高唐县| 嘉祥县| 马山县| 尉氏县| 余干县| 阆中市| 彰化县| 蓝山县| 长顺县| 武穴市| 山东省| 黄龙县| 筠连县| 左云县| 石棉县| 英吉沙县| 石渠县| 哈巴河县| 独山县| 民勤县| 淮安市| 福鼎市| 灵山县| 渑池县| 综艺| 新乡县| 屏山县| 油尖旺区| 青田县|