美文网首页
CORSFilter解决前端跨域请求问题 Day21 2018

CORSFilter解决前端跨域请求问题 Day21 2018

作者: Ernest_Chou | 来源:发表于2018-12-11 20:46 被阅读0次

前后端分离的项目,测试的时候与前端联调的时候发现,出现了跨域请求的问题。浏览器默认会向后端发送一个Options方式的请求,根据后端的响应来判断后端支持哪些请求方式,支持才会真正的发送请求。

1. CORS(Cross-Origin Resource Sharing 跨源资源共享)

当一个请求url的协议、域名、端口三者之间任意一与当前页面地址不同即为跨域。在日常的项目开发时会不可避免的需要进行跨域操作,而在实际进行跨域请求时,经常会遇到类似 No 'Access-Control-Allow-Origin' header is present on the requested resource.这样的报错。这样的错误,一般是由于CORS跨域验证机制设置不正确导致的。

2. 解决方案

2.1 新建CorsFilter,在过滤器中设置相关请求头
/**
 * Json拦截 判断是否跨域
 * 
 * @author zgldo
 *
 */
public class CORSFilter implements Filter {
    private FilterConfig filterConfig;

    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

    @Override
    public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain chain)
        throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) sresponse;
        response.addHeader("Access-Control-Allow-Origin", "*");
        response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE,OPTIONS");
        response.addHeader("Access-Control-Allow-Headers", "Content-Type, x-requested-with, X-Custom-Header");
        response.addHeader("Access-Control-Max-Age", "1800");// 30 min
        chain.doFilter(srequest, sresponse);
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig = filterConfig;
    }

}

2.2 在web.xml中添加Filter配置
<filter>
    <filter-name>CORS</filter-name>
    <filter-class>com.zhougl.filter.CORSFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CORS</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

相关文章

  • CORSFilter解决前端跨域请求问题 Day21 2018

    前后端分离的项目,测试的时候与前端联调的时候发现,出现了跨域请求的问题。浏览器默认会向后端发送一个Options方...

  • Django 后端解决跨域问题

    前端后端分离的项目,经常会遇到跨域请求的问题。解决跨域问题,有从前端的代理解决的方案,和用后端的解决方案。这里介绍...

  • [mark]九种跨域方式实现原理

    前端如何使用proxyTable和nginx解决跨域问题 前言 前后端数据交互经常会碰到请求跨域,什么是跨域,以及...

  • 新增-后端跨域

    前端程序 后端程序 现在请求无法,到达需要解决跨域问题 每个servlet单独做跨域设置 跨域过滤器

  • koa2解决跨域请求和options请求

    跨域 使用koa-cors解决跨域问题 添加一个中间件 解决options请求 由于做了跨域,所以前端用post请...

  • [vue-cli]axios跨域问题

    前后端分离,请求跨域问题。1、已经在后端进行了跨域配置: 但是在前端请求时还是有问题: 解决(= =):这段代码需...

  • 跨域

    ??JSONP只能解决GET请求跨域,不能解决POST请求跨域问题,XHR2可以解决GET,POST方式的请求跨域...

  • 那些年,那些跨域问题

    浏览器在请求不同域的资源时,会因为同源策略的影响请求不成功,这就是通常被提到的“跨域问题”。作为前端开发,解决跨域...

  • 14-vue-cli脚手架配置代理

    1. 问题:如果解决前端的 ajax 请求跨域的问题 首先可以发送 ajax 请求的方法有哪些? xhr js自带...

  • django跨域配置

    前言——跨域请求 前端对Cross-Origin Resource Sharing 问题(CORS,中文又称'跨域...

网友评论

      本文标题:CORSFilter解决前端跨域请求问题 Day21 2018

      本文链接:https://www.haomeiwen.com/subject/wptyhqtx.html