關於跨域問題,主要用的比較多的是cros跨域。
詳細介紹請看
但是,在springmvc+angularjs下支援跨域請求時,出現複雜跨域場景(post + json)失敗的情況。
開始的跨域配置如下:
publicclass 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,沒有支援跨域的配置。
因此,加入新的配置如下:
publicclass 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的方法,這些方法可解...