ajax跨域問題

2021-06-18 01:15:39 字數 1880 閱讀 3999

ajax跨域和js的跨域通訊(cross the site)的幾種解決方案

1.什麼引起了ajax跨域不能的問題

ajax本身實際上是通過xmlhttprequest物件來進行資料的互動,而瀏覽器出於安全考慮,不允許js**進行跨域操作,所以會警告。

2.有什麼完美的解決方案麼?

沒有。解決方案有不少,但是只能是根據自己的實際情況來選擇。

具體情況有:

一、本域和子域的相互訪問: www.aa.com和book.aa.com

二、本域和其他域的相互訪問: www.aa.com和www.bb.com 用 iframe

三、本域和其他域的相互訪問: www.aa.com和www.bb.com 用 xmlhttprequest訪問**

四、本域和其他域的相互訪問: www.aa.com和www.bb.com 用 js建立動態指令碼

解決方法:

一、如果想做到資料的互動,那麼www.aa.com和book.aa.com必須由你來開發才可以。可以將book.aa.com用iframe新增到www.aa.com的某個頁面下,在www.aa.com和iframe裡面都加上document.domain = "aa.com",這樣就可以統一域了,可以實現跨域訪問。就和平時同乙個域中鑲嵌iframe一樣,直接呼叫裡面的js就可以了。(這個辦法我沒有嘗試,不過理論可行)

三、這種情形是最經常遇到的,也是用的最多的了。就是www.aa.com和www.bb.com你只能修改乙個,也就是另外乙個是別人的,人家告訴你你要取得資料就訪問某某連線引數是什麼樣子的,最後返回資料是什麼格式的。而你需要做的就是在你的域下新建乙個網頁,讓伺服器去別人的**上取得資料,再返回給你。domain1下的a向同域下的getdata.aspx請求資料,getdata.aspx向domain2下的responsedata.aspx傳送請求,responsedata.aspx返回資料給getdata.aspx, getdata.aspx再返回給a,這樣就完成了一次資料請求。getdata.aspx在其中充當了**的作用。具體可以看下我的**。

四、這個和上個的區別就是請求是使用標籤來請求的,這個要求也是兩個域都是由你來開發才行。原理就是js檔案注入,在本域內的a內生成乙個js標籤,它的src指向請求的另外乙個域的某個頁面b,b返回資料即可,可以直接返回js的**。因為script的src屬性是可以跨域的。具體看**,這個也比較簡單。

code:

總結:第一種情況:域和子域的問題,可以完全解決互動。

第二種情況:跨域,實現過程非常麻煩,需要兩個域開發者都能控制,適用於簡單互動。

第三種情況:跨域,開發者只控制乙個域即可,實現過程需要增加**取得資料,是常用的方式。

第四種情況:跨域,兩個域開發者都需要控制,返回一段js**。

ps:**自己按照情況修改即可。

Ajax跨域問題

跨域是指跨網域名稱的訪問,以下情況都屬於跨域 跨域原因說明 示例網域名稱不同 www.jd.com與www.taobao.com 網域名稱相同,埠不同 www.jd.com 8080與www.jd.com 8081 二級網域名稱不同 item.jd.com與miaosha.jd.com 如果網域名稱...

ajax跨域問題

首先什麼是跨域,產生跨域的條件是什麼。在軟體的開發過程中,我們可能會遇到這這樣的問題,瀏覽器會報這樣的錯誤。這種其實就是跨域問題,但是,是什麼原因造成的這個問題呢,造成這個問題有三種方式,如下 請求的埠和當前伺服器不同 例如localhost 8080和localhost 8081 請求屬於同一網域...

AJAX跨域問題

前後端分離開發的模式下,存在前端頁面只能請求同乙個域下的後端介面,如果不是同乙個域,就會產生跨域問題。1.瀏覽器限制,並而不是伺服器後台不允許呼叫。2.跨域 協議,網域名稱 ip 埠,任何乙個不一樣,瀏覽器就會認為是跨域 3.我們傳送的是xhr xmlhttprequest請求 1.瀏覽器限制 我們...