美文网首页
http跨域预检问题

http跨域预检问题

作者: 雪味伦调 | 来源:发表于2018-09-13 13:10 被阅读0次

昨天的项目碰到个比较棘手的问题。前端发送ajax请求时,总会在真实请求前多一次请求方法为OPTIONS的请求,而且该请求返回403,导致真实请求失败。后来查阅资料,大致了解了产生该问题的原因及原理,即跨域预检。本文只给出解决方法,不再详述原理,详细可见简单跨域请求和带预检的跨域请求

解决方法也是比较简单,主要是开启后台的options的验证即可。作者使用spirngboot的项目,主要通过拦截器拦截当前的options请求,开启options验证。

public class CorsInterceptor implements HandlerInterceptor {

    private static final String OPTIONS = "OPTIONS";

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
                             Object handler) {
        //跨域预检
        if (OPTIONS.equals(request.getMethod())) {
            response.addHeader("Access-Control-Allow-Origin", "*");
            response.addHeader("Access-Control-Allow-Methods", "*");
            response.addHeader("Access-Control-Allow-Headers", "*");
//            有效期,在24小时内,该请求无需再发送预检请求
            response.addHeader("Access-Control-Max-Age", String.valueOf(24 * 60 * 60));
        }
        return true;
    }
}

springboot添加拦截器

@Configuration
public class GlobalConfiguration implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new CorsInterceptor()).addPathPatterns("/**");
    }
}

以上,即可完成因为跨域预检导致的请求失败的问题。

相关文章

  • http跨域预检问题

    昨天的项目碰到个比较棘手的问题。前端发送ajax请求时,总会在真实请求前多一次请求方法为OPTIONS的请求,而且...

  • axios发送俩次请求的原因

    其实跨域分为简单跨域请求和复杂跨域请求 简单跨域请求是不会发送options请求的 复杂跨域请求会发送一个预检请求...

  • 解决跨域问题的5种状况

    跨域主要涉及4个响应头: Access-Control-Allow-Origin用于设置允许跨域请求源地址 (预检...

  • 跨域

    什么是跨域,为什么浏览器要使用同源策略,你有几种方法可以解决跨域问题,了解预检请求吗? 浏览器处于安全考虑有同源策...

  • 20171225-预检option请求

    1 预检option请求 2 编辑保存的时候payload的字段: 3 跨域问题解决后(??并不确定是否是这个问题...

  • http options请求

    OPTIONS请求即预检请求,可用于检测服务器允许的http方法。当发起跨域请求时,由于安全原因,触发一定条件时浏...

  • 关于浏览器预检(OPTIONS)请求

    浏览器在什么情况下会发起options预检请求? 在非简单请求且跨域的情况下,浏览器会发起options预检请求。...

  • AJAX出现两次请求 options和get|post

    跨域请求 允许跨域请求 preflighted request预请求(options) 跨域请求 XMLHttpR...

  • Koa代理Http请求

    Koa 代理http请求,解决跨域问题 1、为什么用Koa做跨域代理? "最初为了解决跨域问题,我把站点部署到了n...

  • 【综-网】Http浅析【3】——fetch带cookie的跨域问

    在Http浅析【2】——ajax跨域问题中对跨域产生的原因和解决方法做了说明。这一章节,把带cookie的跨域问题...

网友评论

      本文标题:http跨域预检问题

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