web端跨域問題

2021-05-11 07:26:04 字數 3634 閱讀 2195

由於瀏覽器的安全限制,網路連線的跨域訪問時不被允許的,當然其中也包括了xmlhttprequest。但是,有些時候我們需要通過跨域訪問來獲取一些資源,例如:

下列是一些解決方案

ajax

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

最近做的乙個專案中需要ajax跨域取得資料,如果是在本域中確實沒有問題,但是放到二級域和其他域下瀏覽器直接就彈出提示框:「該頁正在訪問其控制範圍之外的資料,這有些危險,是否繼續"

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就可以了。(這個辦法我沒有嘗試,不過理論可行)

二、當兩個域不同時,如果想相互呼叫,那麼同樣需要兩個域都是由你來開發才可以。用iframe可以實現資料的互相呼叫。解決方案就是用window.location物件的hash屬性。hash屬性就是http://domian/web/a.htm

#dshakjdhsjka 裡面的#dshakjdhsjka。利用js改變hash值網頁不會重新整理,可以這樣實現通過js訪問hash值來做到通訊。不過除了ie之外其他大部分瀏覽器只要改變hash就會記錄歷史,你在前進和後退時就需要處理,非常麻煩。不過再做簡單的處理時還是可以用的,具體的**

,在b中直接parent.window.location是無法取得資料的,同樣報沒有許可權的錯誤,需要a把這個傳過來,所以也比較麻煩),同樣a裡面也要做監聽,如果hash變化的話就取得返回的資料,再做相應的處理。

三、這種情形是最經常遇到的,也是用的最多的了。就是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屬性是可以跨域的。具體看**,這個也比較簡單。

總結

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

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

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

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

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

這是拿別人的參考鏈結,老美的文章比較多。

web請求跨域問題

rpc soa中非常常見的問題,那麼它是什麼呢?本質上是client的browser的一種保護機制,客戶端像伺服器a傳送了乙個請求,伺服器a告訴了伺服器b由伺服器b返回了乙個資料,瀏覽器校驗到兩個url不同就會這樣 200卻報錯 如何引起的呢?1這個請求是xhr請求 2這個請求跨域了 怎樣會跨域?埠...

Web開發之跨域問題

最近在工作上遇到了跨域方面的問題,藉此溫習鞏固。跨域是受到瀏覽器的同源策略引起的,為了防止某些文件或指令碼載入別的域下的未知內容造成洩露隱私,破壞系統等安全行為。那什麼是同源的呢?同源是指 應用協議 網域名稱 主機或ip 和埠都相同的url,任意乙個不同就是跨域。跨域直白點講就是瀏覽器會限制js通過...

Web跨域問題的解決

一 跨域問題的由來 為了防止某些文件或指令碼載入別的域下的未知內容造成洩露隱私,破壞系統等安全行為,1995年,netscape 公司在瀏覽器中引入同源策略 sop same origin policy 它是瀏覽器最核心也最基本的安全功能,對web訪問做了兩種限制 1 不能通過ajax的方法或其他指...