Spring MVC的跨域配置

来源:互联网 发布:crossover软件怎么样 编辑:程序博客网 时间:2024/06/10 05:55
近期项目用到跨域访问,正常情况下使用`response.setHeader("Access-Control-Allow-Origin", "*")`在响应头部添加了允许跨域的头部后即可接受简单请求(GET、POST等)的访问。但是一旦在请求的header中增加其他参数,浏览器在跨域访问资源前就会使用OPTIONS请求尝试获取握手信息,上述方法便无法通过过滤器的筛选,导致404出现。故,请教同事,使用apache提供的Corsfilter全局解决跨域问题。具体内容如下:引入依赖
<dependency>    <groupId>org.apache.tomcat</groupId>    <artifactId>tomcat-catalina</artifactId>    <version>8.0.15</version>    <scope>provided</scope><!--这里配置是在打包时忽略该组件--></dependency>
在web.xml中添加CorsFilter过滤器:
<filter>    <filter-name>corsFilter</filter-name>    <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>    <init-param>        <param-name>cors.allowed.origins</param-name>        <!--对所有符合条件的资源生效-->        <param-value>*</param-value>    </init-param>    <init-param>        <param-name>cors.allowed.methods</param-name>        <!--允许GET、POST请求-->        <param-value>GET,POST</param-value>    </init-param>    <init-param>        <param-name>cors.allowed.headers</param-name>        <!--配置所有请求header中需要添加的信息,超出该范围,会被阻止访问-->        <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,token,userCode</param-value>    </init-param>    <init-param>        <param-name>cors.support.credentials</param-name>        <!--不允许使用cookie-->        <param-value>false</param-value>    </init-param>    <init-param>        <param-name>cors.support.maxage</param-name>        <!--一次握手信息后,2700ms内不用再次认证-->        <param-value>2700</param-value>    </init-param></filter><filter-mapping>    <filter-name>characterEncodingFilter</filter-name>    <!--这里允许所有资源的跨域,可视具体情况调整-->    <url-pattern>/*</url-pattern></filter-mapping>
原创粉丝点击