vue+springboot项目,跨域已经解决,但能否成功访问controller具有偶然性,多次刷新就可以成功,是为什么呢?

项目本身采用vue框架作为前端,springboot作为后端,登陆系统采用了SpringSequrity框架,在登陆验证时添加响应头作为解决跨域的方式。

后端解决跨域问题代码:

 @Override

protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException {

// 获取token, 并检查登录状态

SecurityUtils.checkAuthentication(request);

//

response.addHeader("Access-Control-Allow-Origin", "*");

response.addHeader("Access-Control-Allow-Credentials", "true");

response.addHeader("Access-Control-Allow-Methods", "*");

response.addHeader("Access-Control-Allow-Headers", "*");

response.addHeader("Access-Control-Max-Age", "16800");

chain.doFilter(request, response);

}

问题一:

在前端打包整合进后端的static下之后,启动后端,第一次登陆时总会报403错误,但是多刷新就好了。
vue+springboot项目,跨域已经解决,但能否成功访问controller具有偶然性,多次刷新就可以成功,是为什么呢?

vue+springboot项目,跨域已经解决,但能否成功访问controller具有偶然性,多次刷新就可以成功,是为什么呢?
检查成功的请求和非成功的请求,发现报403错误的请求响应头中多了如下两个:

Origin: http://localhost:8001

Content-Length: 0

问题二

在项目使用过程中,多次发生点击一次报403错误,但是多点击几次就成功了,不知道原因是为何?


回答:

我猜哈,可能就是Content-Length: 0的问题,tomcat可能一次性读取到多个请求的数据,又由于http请求的请求体与下一个请求的请求方式是可以连在一起的,所以需要Content-Length去标识这个请求体的具体数据量。如果为0,那么tomcat就不获取请求体了,把上一个的请求体也算作下一个请求的请求方式,那么就可能报错。
vue+springboot项目,跨域已经解决,但能否成功访问controller具有偶然性,多次刷新就可以成功,是为什么呢?

以上是 vue+springboot项目,跨域已经解决,但能否成功访问controller具有偶然性,多次刷新就可以成功,是为什么呢? 的全部内容, 来源链接: utcz.com/p/935424.html

回到顶部