在前後端分離的專案中,通常會遇到跨域的問題。什麼是跨域呢?就是兩個域的協議號、主機號、埠號有其中乙個不相同時,此時需要他們之間進行資料交換,這時候就涉及跨域問題。通常**請求是不允許跨域的,因為跨域是不安全的。
那當需要跨域的時候,怎麼去解決這個問題呢?
有三種方案可以參考:
1、使用jsonp的方式進行資料請求;
2、使用nginx的方式進行反向**;
3、使用cors的方式進行跨域資源共享;
下面我們就介紹一下在springboot如何使用cors這種方式解決跨域問題。
cors,又叫做全程跨域資源共享 (cross-origin resource sharing)。cors需要瀏覽器和伺服器同時支援。目前,所有瀏覽器都支援該功能,ie瀏覽器不能低於ie10。它允許瀏覽器向跨源伺服器,發出xmlhttprequest請求,從而克服了ajax只能同源使用的限制。整個cors通訊過程,都是瀏覽器自動完成,不需要使用者參與。對於開發者來說,cors通訊與同源的ajax通訊沒有差別,**完全一樣。瀏覽器一旦發現ajax請求跨源,就會自動新增一些附加的頭資訊,有時還會多出一次附加的請求,但使用者不會有感覺。因此,實現cors通訊的關鍵是伺服器。只要伺服器實現了cors介面,就可以跨源通訊。
在springboot中,我們可以通過兩種方法配置cors。
1、通過@crossorigin註解進行具體類具體方法配置
@crossorigin註解原始碼:
我們可以看到@crossorigin註解裡面有幾個常用的屬性:
1、string origins:設定允許**網域名稱的列表
2、string allowedheaders:設定跨域請求中允許的請求頭的字段型別
3、string exposedheaders:設定請求頭的一些字段資訊
4、requestmethod mehotds:跨域請求中支援的http請求型別
5、string allowcredentials:設定跨域請求中response頭中的』access-control-allow-credentials』字段值
6、long maxage:設定預檢請求響應的快取持續最大時間。
具體**實現:
跨域 如何解決
當乙個請求url的協議 網域名稱 埠三者之間任意乙個與當前的url不同即為跨域 ex http www.和https www.就是協議上的跨域 http https www.baidu.com 和www.test.com 就是主網域名稱不同 baidu test www.test.com 和blog...
Spring Boot如何解決Mysql斷連問題
spring.datasource.url jdbc mysql localhost test spring.datasource.username dbuser spring.datasource.password dbpass spring.datasource.driver class nam...
如何解決跨域問題
1 什麼是跨域?2 跨域請求資源的方法 解決跨域的方法 1 porxy 反向 定義和用法 proxy 用於將請求傳送給後台伺服器,通過伺服器來傳送請求,然後將請求的結果傳遞給前端。實現方法 通過nginx 注意點 1 如果你 的是https協議的請求,那麼你的proxy首先需要信任該證書 尤其是自定...