Springboot配置跨域訪問

2022-06-23 22:09:10 字數 2244 閱讀 2527

跨源資源共享(cross-origin resource sharing, cors)是由大多數瀏覽器實現的w3c規範,它允許您以靈活的方式指定哪種跨域請求被授權,而不是使用一些不太安全、功能不太強大的方法,比如iframe或jsonp。

參考之前的文章:通訊—跨域資源共享

從4.2開始,spring mvc已支援cors。

在spring boot中使用帶有@crossorigin注釋的controller方法cors配置,不需要任何特定的配置。

@crossorigin註解可以在類上使用,也可以在方法上使用,如:

@crossorigin(origins = "", maxage = 3600)

@restcontroller

public

class

accountcontroller

public

void

remove(@pathvariable long id)

}

常用的屬性有2個,分別是origins和maxage,下面分別解釋下:

@restcontroller

public

class

accountcontroller

public

void

remove(@pathvariable long id)

}

@crossorigin(maxage = 3600)

@restcontroller

public

class

accountcontroller

public

void

remove(@pathvariable long id)

}

remove方法可以被所有**的訪問,retrieve方法只接受**傳送的請求。

@configuration

public

class webmvcconfig extends

webmvcconfigureradapter

}

另外,還可以通過新增 filter 的方式,配置 cors 規則,並手動指定對哪些介面有效。

@bean

public

filterregistrationbean corsfilter()

無論是通過哪種方式配置cors,其實都是在構造corsconfiguration。 乙個cors配置用乙個corsconfiguration類來表示,它的定義如下:

public

class

corsconfiguration

spring中對cors規則的校驗,都是通過委託給defaultcorsprocessor實現的。

defaultcorsprocessor處理過程如下:

判斷依據是header中是否包含origin。如果包含則說明為cors請求,轉到 2;否則,說明不是cors請求,不作任何處理。

判斷responseheader是否已經包含access-control-allow-origin,如果包含,證明已經被處理過了, 轉到 3,否則不再處理。

判斷是否同源,如果是則轉交給負責該請求的類處理

是否配置了cors規則,如果沒有配置,且是預檢請求,則拒絕該請求,如果沒有配置,且不是預檢請求,則交給負責該請求的類處理。如果配置了,則對該請求進行校驗。

校驗就是根據corsconfiguration這個類的配置進行判斷:

判斷origin是否合法

判斷method是否合法

判斷header是否合法

如果全部合法,則在response header中新增響應的字段,並交給負責該請求的類處理,如果不合法,則拒絕該請求。

參考:springboot cors 跨域 @crossorigin

springboot配置cors解決跨域請求問題

springboot跨域配置

1.springboot它的好處就是它強大的自動配置,使我們能夠快速的搭建乙個專案。而springboot主要的設計目的是為微服務而誕生的。在前後端分離架構中,前端請求後端介面必然存在跨域,後端只需要提供服務即可。2.springboot配置跨域 編寫cors配置類 import org.sprin...

SpringBoot配置跨域

springboot vue模式 前端傳送請求到後端,header中的token資訊一直是丟失狀態 當時的後端設定模式如下 configuration enablewebmvc public class springmvcconfig implements webmvcconfigurer para...

spring boot 配置允許跨域

簡單概述什麼是跨域 跨域是指乙個域下的文件或指令碼試圖去請求另乙個域下的資源,這裡跨域是廣義的。其實我們通常所說的跨域是狹義的,是由瀏覽器同源策略限制的一類請求場景。瀏覽器從乙個網域名稱的網頁去請求另乙個網域名稱的資源時,網域名稱 埠 協議任一不同,都是跨域。跨域的訪問會帶來許多安全性的問題,比如,...