通过定义过滤器filter解决跨域问题详解编程语言
2023-06-13 09:20:44 时间
跨域是比较常见问题,比较简单的方式就是直接定义一个过滤器filter,然后在请求头里面加上一些参数。下面来看看具体的写法吧。
一、java代码
public void init(FilterConfig filterConfig) throws ServletException { // TODO Auto-generated method stub /** * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletResponse resp = (HttpServletResponse) response; // 添加参数,允许任意domain访问 resp.setHeader("Access-Control-Allow-Origin", "*"); // 这个allow-headers要配为*,这样才能允许所有的请求头 --- update by zxy in 2018-10-19 resp.setHeader("Access-Control-Allow-Headers", "*"); resp.setHeader("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS"); resp.setHeader("Access-Control-Max-Age", time+""); chain.doFilter(request, resp); /** * @see javax.servlet.Filter#destroy() @Override public void destroy() { // TODO Auto-generated method stub }
filter-name contextFilter /filter-name filter-class com.hj.userapi.core.filter.ContextFilter /filter-class /filter filter-mapping filter-name contextFilter /filter-name url-pattern /* /url-pattern /filter-mapping
通过自定义过滤器,在请求头上添加参数实现允许容易域名访问来解决跨域问题,实现起来比较简单。
public void init(FilterConfig filterConfig) throws ServletException { // TODO Auto-generated method stub /** * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletResponse resp = (HttpServletResponse) response; // 添加参数,允许任意domain访问 resp.setHeader("Access-Control-Allow-Origin", "*"); // 这个allow-headers要配为*,这样才能允许所有的请求头 --- update by zxy in 2018-10-19 resp.setHeader("Access-Control-Allow-Headers", "*"); resp.setHeader("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS"); resp.setHeader("Access-Control-Max-Age", time+""); chain.doFilter(request, resp); /** * @see javax.servlet.Filter#destroy() @Override public void destroy() { // TODO Auto-generated method stub }
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
public void init(FilterConfig filterConfig) throws ServletException {
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletResponse resp = (HttpServletResponse) response;
resp.setHeader("Access-Control-Allow-Origin", "*");
// 这个allow-headers要配为*,这样才能允许所有的请求头 --- update by zxy in 2018-10-19
resp.setHeader("Access-Control-Allow-Headers", "*");
resp.setHeader("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
resp.setHeader("Access-Control-Max-Age", time+"");
filter-name contextFilter /filter-name filter-class com.hj.userapi.core.filter.ContextFilter /filter-class /filter filter-mapping filter-name contextFilter /filter-name url-pattern /* /url-pattern /filter-mapping
filter-class com.hj.userapi.core.filter.ContextFilter /filter-class
通过自定义过滤器,在请求头上添加参数实现允许容易域名访问来解决跨域问题,实现起来比较简单。
相关文章
- Java + Ajax跨域解决方案整理
- ajax如何解决跨域_除了jsonp还有什么跨域方式
- 记一个小的 SpringCloud CORS跨域问题 | 冷饭热炒
- SpringBoot解决CORS跨域(@CrossOrigin)
- 不同页面通信与跨域
- jsonp跨域原理简单总结_jsonp的工作原理
- axios 跨域问题_前端跨域产生的原因和解决方法
- vueaxios跨域请求_vue如何实现跨域
- nginx转发服务器_jquery跨域请求
- vue跨域问题的三种解决方案_vue上线之后跨域问题
- React跨域配置
- Spring Cloud Gateway解决跨域问题
- AJAX跨域问题解决思路详解编程语言
- javaScript跨域总结和相关解决办法大全详解编程语言
- JSONP跨域请求详解编程语言
- ajax 设置Access-Control-Allow-Origin实现跨域访问详解编程语言
- ajax 跨域携带COOKIE详解编程语言
- jquery ajax怎么使用jsonp跨域访问详解编程语言
- 跨域单点登录技术利用Redis提升安全性(单点登录跨域redis)
- discuz跨域整合的记录文件
- jQuery跨域访问问题解决方法
- 关于Iframe如何跨域访问Cookie和Session的解决方法