溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Ajax請求跨域的解決方案

發(fā)布時間:2021-08-20 20:09:47 來源:億速云 閱讀:141 作者:chen 欄目:web開發(fā)

這篇文章主要講解了“Ajax請求跨域的解決方案”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Ajax請求跨域的解決方案”吧!

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

1、jsonp訪問

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

實現方式

  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請求,也會自動給你轉換成post;

  2】 jsonp 不僅可以用來獲取數據,也可以用來提交數據。

2、damain 方法

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

document.domain = 'a.com'

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

下面是修改的域名指向:

#127.0.0.1  localhost
127.0.0.1   公司.com

3、postMessage

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

  這里假設,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的數據了。

感謝各位的閱讀,以上就是“Ajax請求跨域的解決方案”的內容了,經過本文的學習后,相信大家對Ajax請求跨域的解決方案這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI