springboot解决跨域时遇见的问题----两个请求结果傻傻分不清。

先来看下问题:

图片中是我公司项目跑起来之后产生的问题,一个页面请求另一个java后台之后产生的结果。产生1的原因是因为我没有在springboot项目的后台中没有配置跨域。

但是后来我在WebMvcConfigurerAdapter配置了cors协议的解决跨域的方案,但是还是出现了2的问题,把问题扔到网上依旧给的答案是跨域。以下方案是我个人写的项目中测试的:

方案一(最初配置):


方案二:


方案三:


在尝试了这个三个之后,任然是报的同样的错误,后来仔细的去阅读了相关的资料,发现这三个其实本质都是一样的,都是springMVC4.2之后的支持cors协议来解决的。所以另外写了一个项目去尝试了下,发现是没有问题的,所以问题又只能追回到原来的项目。撇开项目中所有的业务代码,就只有拦截器了。在将项目的拦截器都注释掉之后呢,就没有产生这个问题了,所以,这边通过cors协议解决是没有问题的。

现在讲解下为何会出现这个问题(代码不贴了,毕竟公司的代码):项目中配置的拦截器作用是从请求的header中获取必须要的数据,如果没有找到数据,则抛出自定义的异常,当然验证跨域的第一次请求是直接return true了。在我自己写的自定义ajax请求页面中,是没有配置header对应的数据的,所以抛出了异常,导致出现这个问题。但是却没有返回全局异常处理的结果,这边的原因可能是全局异常的处理范围只做到了业务代码的范围,没有到拦截器的原因。

分析下原因(个人意见):根据@CrossOrigin配置在controller层,但是拦截器却在controller之外,所以抛出异常以后,全局异常处理也没有处理到,导致DispatcherServlet没有处理到请求,抛出了这个异常。

到这边我的讲解也结束了,但是上面的都是个人的猜测,自己也需要对springMVC、切面等运行过程有更多了解,谢谢观看!希望能给些意见。。。。。


 
 




猜你喜欢

转载自blog.csdn.net/qq_36633149/article/details/79861258