當前位置:首頁 » 雲伺服器 » 前端如何解決伺服器跨域

前端如何解決伺服器跨域

發布時間: 2023-05-20 17:40:07

1. 前端跨域如何解決

什麼是跨域?
跨域是通俗的說是從一個域名去請求另一個域名的資源。比如從 www..com 頁面去請求 www.taobao.com 的資源。
跨域嚴格一點來說:兩個域名只要協議,域名,埠中只要有冊蘆一個不同,就被成為跨域

瀏覽器為什麼要限制跨域?
只有同域才可以拿到存在cookie中的信息,防止壞人隨意拿到我們的信息去做壞事

在團隊的配置中,我們為了減少前端對後端的依賴,提高開發效率,使前後端職責更清晰等等因素,我們不得不面伏姿讓對跨域的問題,那我們該怎麼解決呢?

1、 JSONP
原理:瀏覽器缺局對script的資源引用沒有同源限制,同時資源載入到頁面後會立即執行,所以通過動態插入script標簽即可達到跨域的請求
特點:數據為json格式
缺點:不能post

2、 CORS
原理 : cors(Cross-Origin Resource Sharing)是 W3C CORS 工作草案 ,它定義了在跨域訪問資源時瀏覽器和伺服器之間如何通信。CORS背後的基本思想是使用自定義的HTTP頭部允許瀏覽器和伺服器相互了解對方,從而決定請求或響應成功與否
特點 :是 JSONP 模式的現代版。支持更多的請求方式,XMLHttpRequest
缺點:需後端配合修改,現代瀏覽器支持cors,老瀏覽器依舊要用JSONP

3、 PROXY
原理:proxy代理用於將請求攔截,然後通過伺服器來發送請求,然後再將請求的結果傳遞給前端

node通常用 node-http-proxy 即可

proxy太通用了,weblack-dev-server里已集成,使用時直接配置即可 webpack-dev-server proxy代理

2. 前端解決跨域都有哪些方法

什麼是跨域?

瀏覽器發送的請求地址(URL)與所在頁面的地址 不同(埠/協議/域名 其一不同)。簡言之,瀏覽器發出的請求url,與其所在頁面的url不一樣。此時,同源策略會讓瀏覽器拒收 伺服器響應回來的數據,報錯信息如下:


最常用的四種跨域解決方案

1.cors

cors跨域資源共享允許是在服務端"Access-Control-Allow-Origin"欄位設置的,當將cors設置為允許某個地址訪問時,該地址就可以跨域訪問這個伺服器地址。當cors設置為"*"時即允許所有地址訪問時,則表示所有地址都可以跨域訪問這個伺服器地址的資源。

2、 通過jsonp跨域

Jsonp是Json的一種「使用模式」,他就可以解決瀏覽器遇到的跨域問題,我們可以動態創建script,再請求一個帶參網址實現跨域通信。用Jsonp請求得到的是JavaScript,相當於直接用JavaScript解析。

3、postMessage跨域

在h5中新增了postMessage方法,postMessage可以實現跨文檔消息傳輸,我們可以通過Windows的message事件來監聽發送跨文檔消息傳輸內容。

4、proxy(代理)

原理:因為同源策略只是針對瀏覽器的安全策略,但是服務端並不受同源策略的限制,也就不存在跨域的問題。

3. 請求介面時跨域問題,前端解決方法

在前後端介面請求中,由於瀏覽器的限制,會出現跨域的情況。常用的跨域方案有:

1、JSONP跨域
2、Nginx反向代理
3、伺服器端修改header
4、document.domain
5、window.name
6、postMessage
7、後台配置運行跨域

當一個請求url的 協議、域名、埠 三者之間任意一個與當前頁面url不同即為跨域

特別注意兩點:
1、如果是協議和埠造成的跨域問題「前台」是無能為力的,
2、在跨域問題上,域僅僅是通過「URL的首部」來識別而不會去嘗試判斷相同的ip地址對應著兩個域或兩個域是否在同一個ip上。

4. 前端跨域的幾種解決方案

1.Cookie、LocalStorage和IndexDB無法讀取
2.DOM和JS對象無法獲取
3.Ajax請求不能發送

1.簡單請求
2.非簡單請求

1.請求方法是以下三種方法之一.

2.HTTP請求頭必須是下面幾種欄位

對於簡單請求就是瀏覽器直接發出CORS,具體來說就是請求頭添加Origin欄位

如果Origin指定的域名在許可范圍內,伺服器返回的響應,會多出幾個頭信息響應欄位

1.Access-Control-Allow-Origin:必選

2.Access-Control-Allow-Credentials:可選

3.Access-Control-Expose-Headers

"預檢"請求用的請求方法是OPTIONS,表示這個請求是用來詢問的。頭信息裡面,關鍵欄位是Origin,表示請求來自哪個源。

除了Origin欄位,「預檢」請求的頭信息包括兩個特殊欄位。

1.Access-Control-Request-Method

2.Access-Control-Request-Headers

伺服器收到「預檢」請賣型求以後,檢查螞喚了Origin、Access-Control-Request-Method和Access-Control-Request-Headers欄位以後,確認允許跨源請求,就可中物猜以做出回應。

5. 如何解決前端跨域問題

可以使用伺服器代理或者在後端設置允許跨域。
現在的項目一般是在後端設置允許跨域,前端在帶有允許跨域的情況下,可以像沒有跨域一樣正常訪問。
如果前端單獨發布到伺服器,也可以在伺服器是設置代理,使用代理轉發請求。

熱點內容
精通腳本 發布:2025-05-20 14:42:56 瀏覽:384
東方財富經典版如何更改密碼 發布:2025-05-20 14:42:43 瀏覽:943
砸口紅解壓 發布:2025-05-20 14:41:02 瀏覽:510
配置sp失敗怎麼辦 發布:2025-05-20 14:35:08 瀏覽:178
java學到什麼程度 發布:2025-05-20 14:31:54 瀏覽:479
壓縮誤差分析 發布:2025-05-20 14:27:53 瀏覽:97
每秒上億次訪問伺服器怎麼處理 發布:2025-05-20 14:10:07 瀏覽:314
按鍵精靈資料庫操作 發布:2025-05-20 14:08:33 瀏覽:592
360瀏覽器無法訪問網路 發布:2025-05-20 14:05:13 瀏覽:834
存儲伺服器地址錯誤 發布:2025-05-20 14:01:46 瀏覽:912