關於springmvc跨域

2022-05-03 21:06:10 字數 1786 閱讀 7563

關於跨域問題,主要用的比較多的是cros跨域。

詳細介紹請看

但是,在springmvc+angularjs下支援跨域請求時,出現複雜跨域場景(post + json)失敗的情況。

開始的跨域配置如下:

public

class crossinterceptor extends

handlerinterceptoradapter

}

spring-dispatcher-servlet.xml中配置如下:

<

mvc:interceptors

>

<

mvc:interceptor

>

<

path

="/**/*"

/>

<

bean

class

="cn.***.filter.crossinterceptor"

/>

mvc:interceptor

>

mvc:interceptors

>

針對簡單跨域沒問題。但是針對post+json請求卻失敗,提示跨域失敗。

跟蹤springmvc原始碼到frameworkservlet中的dooption方法,發現,接受了option預檢,但是spring主動返回allow,沒有支援跨域的配置。

因此,加入新的配置如下:

public

class crossfilter extends

onceperrequestfilter

filterchain.dofilter(request, response);

}}

web.xml配置如下:

<

filter

>

<

filter-name

>cors

filter-name

>

<

filter-class

>cn.***.filter.crossfilter

filter-class

>

filter

>

<

>

<

filter-name

>cors

filter-name

>

<

url-pattern

>/*

url-pattern

>

>

此時,option請求被crossfilter過濾器接入並賦予跨域響應頭,同時也進入frameworkservlet中的dooption方法。檢視瀏覽器控制台,發現option請求返回支援跨域資訊,後續的post請求進入controller。

公升級spring版本的後,上述跨域並不支援所有瀏覽器。經測試,safari正常,chrome異常。重新翻了一下最新的文件後,得到最新的跨域配置如下:

<

mvc:cors

>

<

path

="/**"

allowed-origins

="*"

allow-credentials

="true"

max-age

="1800"

allowed-methods

="get,post,options"

/>

mvc:cors

>

相比3.x系列,簡單了很多。

SpringMVC解決跨域

跨域,即跨站http請求 cross site http request 指發起請求的資源所在域不同於請求指向資源所在域的http請求。當使用前後端分離,後端主導的開發方式進行前後端協作開發時,常常有如下情景 後端開發完畢在伺服器上進行部署並給前端api文件。前端在本地進行開發並向遠端伺服器上部署的...

飛昂之雪 關於springmvc跨域

關於跨域問題,主要用的比較多的是cros跨域。詳細介紹請看 但是,在springmvc angularjs下支援跨域請求時,出現複雜跨域場景 post json 失敗的情況。開始的跨域配置如下 public class crossinterceptor extends handlerintercep...

SpringMVC跨域亂碼問題

最近的工作重點轉移至web開發,使用框架主要還是spring mvc,jackson,jquery,但在開發中又遭遇了n年前的跨域問題,jsonp亂碼問題,其實這些問題產生原因很簡單,但實際上解決起來卻需要了解各種機制執行內幕.解決方案 當然,網上還有不少自定義converter的方法,這些方法可解...