js 幾種跨域解決方法

2022-06-10 14:33:10 字數 859 閱讀 9771

同源策略:

js只能與同乙個域中的頁面進行通訊,必須是協議、網域名稱、埠都相同,相同域下才能相互通訊,這可以被認為是一種通訊原則,叫同源策略。

跨域:

js跨域是指通過js在不同的域之間進行資料傳輸或通訊,比如用ajax向乙個不同的域請求資料,或者通過js獲取頁面中不同域的框架中(iframe)的資料。只要協議、網域名稱、埠有任何乙個不同,都被當作是不同的域。

下表給出了相對同源檢測的結果:

四種方法解決跨域:

1、jsonp;

jsonp跨域請求類似於ajax的get請求,比如請求位址url= 'localhsot:8080/search.php?callback=getremotedata',注意jsonp後面的callback引數,請求是必帶

2、document.domain;

document.domain也可以解決跨域,不過只能是子網域名稱間的跨域,這個要注意

3、window.name;

先介紹下window.name,window物件有個name屬性,只要是當前頁面載入過的所有頁面都是共享window.name,每個頁面都有對window.name的讀寫許可權。其借助iframe中介進行資料通訊

4、h5 postmessage

html5提供的方法,缺點是ie8+才支援,主要是通過父子間通過iframe進行相互通訊

js跨域及解決方法

前段時間做重構公司 的時候需要跨域訪問我們這邊其他系統的介面,由於那邊的介面都是採用webservice的方式返回json的形式提供的,正好他們那邊還提供的ajax的使用示例,就懶得在跑到後台去傳遞了,直接前台用ajax了。結果一直沒有效果,chrome除錯的時候報出這樣的提示xmlhttprequ...

跨域請求的幾種解決方法

跨域請求 兩個不同網域名稱之間的通訊。ajax受到瀏覽器的限制 安全性考慮 不允許跨域通訊。報錯 req.send script 預設情況下瀏覽器採用同源策略 乙個域下面的js只能請求同乙個域下面的文件內容,不能跨域請求。1.1 解決方法一 src屬性 使用標籤的src屬性,src屬性是沒有同源的限...

vue跨域解決方法

vue專案中,前端與後台進行資料請求或者提交的時候,如果後台沒有設定跨域,前端本地除錯 的時候就會報 no access control allow origin header is present on the requested resource.這種跨域錯誤。要想本地正常的除錯,解決的辦法有三...