<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <p></p>
讯享网
Access to XMLHttpRequest at ‘http://localhost:8087/api/user/list’ from origin ‘http://localhost:8081’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
讯享网
简单一句话概况:
还不懂这个概念就找度娘吧,在这个博文里解释概念不是重点哈。
配置proxy来支持跨域,向后台请求登陆和数据,在 配置文件中配置代理
方法一和方法二配置了也有可能不生效,还是爆跨越错误,请看第三点
这个方法是有缺点的,只能配置一个。推荐使用方法二
讯享网
a、axios 的 baseURL配置
我们在配置axios的全局地址时,一般是这样配置的:
讯享网
还有可能不是这样直接配置的,而且先定义的变量,通过其他配置在取这个,但是这个一定是会配置的,我一般是定义下面的这个变量的,方便管理
b、解决问题
所以不论是 还是 环境下,我的请求都会发送给我们配置的,

所以我们得修改一下配置,使我们的生产路径在开大环境下才生效
讯享网
这样在开发环境下,我们的 , 代理就可以生效了。
注意
- 还有一点就是,即使我们的代理生效了,但是在浏览器请求头中展示的也不是配置的代理地址;
- 所以测的时候得多问问后端请求过去没有,或者自己node搭个简易的服务器看看成没成功;
- 不要一根筋的死盯浏览器的请求头地址。
- 借鉴的博客vue.config.js 中 devServer.proxy 配置说明,以及配置正确不生效问题
借鉴博文SpringBoot解决跨域的5种方式
对于 CORS的跨域请求,主要有以下几种方式可供选择:
- 返回新的CorsFilter(全局跨域)
- 重写 WebMvcConfigurer(全局跨域)
- 使用注解 @CrossOrigin(局部跨域)
- 手动设置响应头 (HttpServletResponse) (局部跨域)
- 自定web filter 过滤器 实现跨域 (全局跨域)
- 自定义 springboot interceptor 拦截器 实现跨域 (全局跨域)
注意:

- 需要 SpringMVC 4.2以上版本才支持,对应springBoot 1.3版本以上
- 上面前两种方式属于全局 CORS 配置,后两种属于局部 CORS配置。如果使用了局部跨域是会覆盖全局跨域的规则,所以可以通过 @CrossOrigin 注解来进行细粒度更高的跨域资源控制。
- 其实无论哪种方案,最终目的都是修改响应头,向响应头中添加浏览器所要求的数据,进而实现跨域
讯享网
在控制器(类上)上使用注解 @CrossOrigin:,表示该类的所有方法允许跨域。
讯享网
在方法上使用注解 @CrossOrigin:
使用 HttpServletResponse 对象添加响应头(Access-Control-Allow-Origin)来授权原始域,这里 Origin的值也可以设置为 “*”,表示全部放行。
讯享网
首先编写一个过滤器,可以起名字为MyCorsFilter.java
先写拦截器MyInterceptor.java的实现类
讯享网
在写WebAppConfig.java,重写 WebMvcConfigurer.java 类,将拦截器注入(我这里写的是对请求的过滤,可以忽略掉)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/171800.html