這篇文章主要講解了“Ajax請求跨域的解決方案”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Ajax請求跨域的解決方案”吧!
目前創(chuàng)新互聯(lián)已為千余家的企業(yè)提供了網站建設、域名、網絡空間、網站托管維護、企業(yè)網站設計、馬邊彝族網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
由于瀏覽器實現(xiàn)的同源策略的限制,XmlHttpRequest只允許請求當前源(域名、協(xié)議、端口)的資源,所以AJAX是不允許跨域的。這里提供自己常用的三種方法:
1、jsonp訪問
JSONP(JSON with Padding)是一個非官方的協(xié)議,它允許在服務器端集成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請求,也會自動給你轉換成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請求跨域的解決方案這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關知識點的文章,歡迎關注!
網站題目:Ajax請求跨域的解決方案
本文網址:http://chinadenli.net/article32/jiepsc.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站設計、品牌網站建設、定制開發(fā)、域名注冊、網頁設計公司、全網營銷推廣
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)