Ajax請(qǐng)求跨域的解決方案-創(chuàng)新互聯(lián)

這篇文章主要講解了“Ajax請(qǐng)求跨域的解決方案”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Ajax請(qǐng)求跨域的解決方案”吧!

成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的延安網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

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


1、jsonp訪問

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

實(shí)現(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請(qǐng)求,哪怕你用了post請(qǐng)求,也會(huì)自動(dòng)給你轉(zhuǎn)換成post;

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

2、damain 方法

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

document.domain = 'a.com'

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

下面是修改的域名指向:

#127.0.0.1  localhost
127.0.0.1   公司.com

3、postMessage

postMessage是h6的一個(gè)新功能之一,由于我們是一家做h6游戲的公司,不可避免的要嵌套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請(qǐng)求跨域的解決方案”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Ajax請(qǐng)求跨域的解決方案這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

分享標(biāo)題:Ajax請(qǐng)求跨域的解決方案-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://bm7419.com/article4/ddhioe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、品牌網(wǎng)站制作微信小程序、建站公司企業(yè)網(wǎng)站制作、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)