如何解決跨域問題

2021-09-25 13:16:52 字數 1296 閱讀 1276

1.jsonp跨域(前端)

json返回的是一串資料,而jsonp返回的是指令碼**

jsonp只支援get請求,不支援post請求

2.nginx反向**(後端)

www.baidu/index.html需要呼叫www.sina.com/server.php,可以寫乙個介面www.baidu.com/server.php,由這個介面在後端去呼叫www.sina.com/server.php並拿到返回值,然後再返回給index.html

3.php端修改header(後端)

header(『access-control-allow-origin』);允許所有**訪問

header(『access-control-allow-method:post,get』);允許訪問的方式

4.document.domian(後端)

跨域分兩種,一種xhr不嗯呢該訪問不同源的文件,另一種是不同window之間不能進行互動操作。

document.domain主要是解決第二種情況,而且設定是有限制的,只能把document.domain設定成自身或更高一級的父域且主域必須相同。

相容性:所有瀏覽器都支援

優點:可以實現不同window之間的相互訪問和操作

缺點:只適用於父子window之間的通訊,不能用於xhr

只能在主域相同且子域不同的情況下使用

5.window.name(前端)

關鍵點:window.name在頁面的生命週期裡共享乙個window.name

相容性:所有瀏覽器都支援

優點:最簡單的利用了瀏覽器的特性來做到不同域之間的資料傳遞

不需要前端和後端的特殊配置

缺點:大小限制:window.name最大size是2m左右,不同瀏覽器中會有不同約定

安全性:當前頁面所有window都可以修改,很不安全

資料型別:傳遞資料只能限於字串,如果是物件或者其他會自動被轉化為字串

6.postmessage(前端)

postmessage是h5引入的乙個新概念,現在也在進一步的推廣和發展中,他進行了一系列的封裝,我們可以通過window.postmessage的方式進行使用,並可以監聽其傳送的訊息

相容性:移動端可以放心用,但是pc端需要做降級處理

優點:不需要後端介入就可以做到跨域,乙個函式外加兩個引數就可以搞定

移動端相容性好

缺點:無法做到一對一的傳遞方式

如何解決跨域問題

1 什麼是跨域?2 跨域請求資源的方法 解決跨域的方法 1 porxy 反向 定義和用法 proxy 用於將請求傳送給後台伺服器,通過伺服器來傳送請求,然後將請求的結果傳遞給前端。實現方法 通過nginx 注意點 1 如果你 的是https協議的請求,那麼你的proxy首先需要信任該證書 尤其是自定...

如何解決跨域問題?

跨域問題可以使用一下幾種方法解決 jsonp解決 jsonp和ajax一樣,是一門技術,缺點是get方式長度限制不能拼太多東西,大概2kb 前端偏好 或者iframe解決 操作簡單 或者h5新增了window.postmessage方法可以實現跨域通訊 相容不好 還能修改document.domai...

跨域 如何解決

當乙個請求url的協議 網域名稱 埠三者之間任意乙個與當前的url不同即為跨域 ex http www.和https www.就是協議上的跨域 http https www.baidu.com 和www.test.com 就是主網域名稱不同 baidu test www.test.com 和blog...