Java服务端 CORS 跨域配置
来源:互联网 发布:金山软件管家官方 编辑:程序博客网 时间:2024/06/03 13:21
现在的web程序架构越来越趋向于前后端分离,前后端分离的好处,这里就不再说了。但面临的问题就有一个,那就是跨域的问题。这里简单记录一下服务端这边的解决方案。
本文相关部分参考及引用自 http://blog.csdn.net/andong154564667/article/details/51508042
外部jar包实现
maven 加入依赖:
<dependency> <groupId>com.thetransactioncompany</groupId> <artifactId>java-property-utils</artifactId> <version>1.7.1</version> </dependency> <dependency> <groupId>com.thetransactioncompany</groupId> <artifactId>cors-filter</artifactId> <version>2.5</version> </dependency>
web.xml中配置:
<filter> <description>跨域过滤器</description> <filter-name>CORS</filter-name> <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class> <init-param> <param-name>cors.allowOrigin</param-name> <param-value>*</param-value> </init-param> <init-param> <param-name>cors.supportedMethods</param-name> <param-value>GET, POST, HEAD, PUT, DELETE, OPTIONS</param-value> </init-param> <init-param> <param-name>cors.supportedHeaders</param-name> <param-value>Accept, Origin, X-Requested-With, Content-Type, fuserkey</param-value> </init-param> <init-param> <param-name>cors.exposedHeaders</param-name> <param-value>Set-Cookie</param-value> </init-param> <init-param> <param-name>cors.supportsCredentials</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>CORS</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping>
自定义Filter实现
这里使用的是基于 servlet 3.0 注解方式配置Filter,需要servlet 3.0, tomcat 7及以上的才有此包。相关基于注解方式配置Filter,Servlet 自行百度。
import org.apache.commons.lang3.StringUtils;import javax.servlet.*;import javax.servlet.annotation.WebFilter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;/** * 跨域过滤器 * * 基于 servlet 3.0 注解方式配置Filter * 需要servlet 3.0, tomcat 7及以上的才有此包. * 多个filter的执行顺序,通过类名排序. * * @author yanfa.Chen * @date 2017/12/1 */@WebFilter(filterName = "corsFilter", value = {"*.do"})public class CorsFilter implements Filter { /* Access-Control-Allow-Origin:允许访问的客户端域名,例如:http://web.xxx.com,若为*,则表示从任意域都能访问,即不做任何限制; Access-Control-Allow-Methods:允许访问的方法名,多个方法名用逗号分割,例如:GET,POST,PUT,DELETE,OPTIONS; Access-Control-Allow-Credentials:是否允许请求带有验证信息,若要获取客户端域下的cookie时,需要将其设置为true; Access-Control-Allow-Headers:允许服务端访问的客户端请求头,多个请求头用逗号分割,例如:Content-Type; Access-Control-Expose-Headers:允许客户端访问的服务端响应头,多个响应头用逗号分割。 */ /** * 允许的请求源,默认为所有。 * 如果需要配置为允许多个域名,则可以采用数组形式,如果当前请求的origin 包含在白名单中就设置该域名到origin中。 */ private final String allowOrigin = "*"; /** * 允许请求的方法 */ private final String allowMethods = "GET,POST,PUT,DELETE,OPTIONS"; private final String allowCredentials = "true"; private final String allowHeaders = "Accept, Origin, X-Requested-With, Content-Type, fuserkey"; private final String exposeHeaders = "Set-Cookie"; @Override public void destroy() { } @Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) resp; String currentOrigin = request.getHeader("Origin"); if(StringUtils.isNotEmpty(allowOrigin)){ response.setHeader("Access-Control-Allow-Origin", allowOrigin); } response.setHeader("Access-Control-Allow-Methods", allowMethods); response.setHeader("Access-Control-Allow-Credentials", allowCredentials); response.setHeader("Access-Control-Allow-Headers", allowHeaders); response.setHeader("Access-Control-Expose-Headers", exposeHeaders); chain.doFilter(req, resp); } @Override public void init(FilterConfig config) throws ServletException { System.out.println("CorsFilter 启动了"); }}
阅读全文
0 0
- Java服务端 CORS 跨域配置
- java服务端解决js跨域的问题 CORS(跨域资源共享) 的配置
- CORS(跨域访问) 服务端流程图
- cors java跨域解决方案
- CORS(跨域资源共享) 的配置
- CORS(跨域资源共享) 的配置
- CORS(跨域资源共享) 的配置
- CORS(跨域资源共享) 的配置
- CORS(跨域资源共享) 的配置
- tomcat7.0配置CORS(跨域资源共享)
- CORS(跨域资源共享) 的配置
- tomcat7.0配置CORS(跨域资源共享)
- tomcat配置cors实现跨域
- 记录一个cors nginx跨域配置
- SpringBoot配置CORS跨域访问
- CORS跨域,java开发配置
- java使用cors解决跨域问题
- Java实现CORS跨域请求
- Qt给窗口或者控件设置透明度
- 统计一个数字在排序数组中出现的次数
- GPS定位精度简析
- Laravel POST、PUT、PATCH 路由的区别
- 更样式进度条代码
- Java服务端 CORS 跨域配置
- 生产者与消费者模型(重要)
- Java:一个帝国的诞生
- unity shader-边缘发光
- C语言小游戏----三子棋
- jQuery实现制作网页轮播图效果
- Android防止同时点击多个控件
- linux开机启动Redis,MongoDB,Tomcat
- 【深度学习】caffe之编译错误