Angular前后端分散-在Springboot添加监听器后,来访跨域被允许问题

原创
小哥 3年前 (2022-11-16) 阅读数 8 #大杂烩

首先发布我的详细错误信息

Access to XMLHttpRequest at ‘http://localhost:8080/findUserLogPage’ from origin ‘http://localhost:4200’ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

清除跨域安全问题

我当时的手术是token, 要验证这一点token只有这样,才能查询所有用户的登录信息log它曾经是可操作的, 但我把验证token这项行动被添加到我的拦截器中, 上述错误被揭露了。

在这里,我将把前面的代码放在第一位。

String token = request.getHeader("token");
        // 请求第一个条目的所有方法
        String reqURL = request.getRequestURL().toString();
        // String ip = request.getRemoteHost();
        if (handler instanceof HandlerMethod) {
            HandlerMethod h = (HandlerMethod) handler;
            String sb =
                    // Controller 的包名
                    "Controller    : " + h.getBean().getClass().getName() + "

" + // 方法名称 "Method : " + h.getMethod().getName() + " " + // 请求方式 postputget 等等 "RequestMethod : " + request.getMethod() + " " + // 部分请求链接 "URI : " + request.getRequestURI() + " " + // 完成请求链接 "AllURI : " + reqURL + " " + "-----------------------" + new Date() + "------------------------------------- "; logger.info(sb); } if (null != token) { return JwtUtil.verity(token); } return false; }

在那之后,我疯了百度, 找出添加拦截器后发生跨域安全问题的原因。
后来 我看了(https://blog.csdn.net/achang07/article/details/79380990在这篇文章之后有一点理解。 是 OPTION 的坑
一个发生在发出复杂请求之前。OPTIONS请求。
OPTIONS该请求可以称为嗅探请求,通过这种方法,客户端可以决定在执行特定资源请求之前对资源采取什么必要的操作。
因为我的问题出现在请求内容中。json因此,这是一个复杂的请求,是事先提出的。OPTIONS请求。
这个OPTIONS请求报头不被添加到请求中, 所以它不能通过, 它被拦截了

解决办法

在目前的项目中,考虑起来并不太复杂。我的治疗方法是释放它。OPTIONS请求。
我可以通过将以下代码添加到拦截器(在前面)来传递

        //拦截器接收请求,如果是,则首先进行判断。OPTIONS请求,然后释放
        if("OPTIONS".equals(request.getMethod().toUpperCase())) {
            System.out.println("Method:OPTIONS");
            return true;
        }

另一个问题是, 当时,我看到一些人说, 一些黑客伪装OPTION请求联系我们API, 然后 我也不知道还有什么更好的方法。
先留下问题, 它将在解决后更新!

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除