吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 995|回复: 7
收起左侧

[学习记录] VUE,SpringBoot跨域问题

[复制链接]
wcznb 发表于 2023-3-8 10:03

跨域问题

前后端分离开发
前端Vue

后端springBoot

前端向后端发送请求后会有:

Access to XMLHttpRequest at 'http://192.168.2.222:8082/bop/spaces' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

原因是:被CORS策略阻止,缺少一些http头信息,导致这个响应读取被阻止,其实它是浏览器的一种保护机制,并不是说后端没有接收到请求,后端接收到请求了,并且返回响应结果了。这是因为浏览器的同源策略。

同源策略

协议、域名、端口3个都相同算同源,无跨域问题
例如:
Vue http://localhost:8080
SpringBoot http://localhost:8081

它是一种确保安全的策略

CORS:Cross Origin Resource Sharing跨域资源共享

后端解决跨域问题:
SpringBoot项目中
1.在目标方法中添加@CrossOrigin
2.添加一个CORS过滤器

@Configuration
public class CorsConfig{
    @Bean
    public CorsFilter corsFilter(){
        CoresConfiguration corsConfiguration = new CoresConfiguration();
        corsConfiguration.addAllowdOrigin("*");
        corsConfiguration.addAllowdHeader("*");
        corsConfiguration.addAllowdMethod("*");
        urlBasedCorsConfigurationSource source = new urlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**",corsConfiguratio);
        return new CorsFilter(source);

    }
}

3.实现WebMvcConfigurer接口重写addCorsMappings的方法

@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {

        /**addMapping:配置可以被跨域的路径,可以任意配置,可以具体到直接请求路径。
         allowedMethods:允许所有的请求方法访问该跨域资源服务器,如:POST、GET、PUT、DELETE等。
         allowedOrigins:允许所有的请求域名访问我们的跨域资源,可以固定单条或者多条内容,如:“http://www.aaa.com”,只有该域名可以访问我们的跨域资源。
         allowedHeaders:允许所有的请求header访问,可以自定义设置任意请求头信息。
         **/
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedHeaders("*")
                .allowedMethods("GET", "POST", "DELETE", "PUT", "OPTIONS", "HEAD")
                .maxAge(3600);
    }
}

免费评分

参与人数 2吾爱币 +2 热心值 +1 收起 理由
soenluzy + 1 我很赞同!
惺忪忪 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

打酱油的笨小孩 发表于 2023-3-8 10:27
收藏了,有帮助
星月淘 发表于 2023-3-8 11:23
开发工程中一般不这么做,通用做法是vue工程配置devServer作转发
as7810 发表于 2023-3-8 12:03
本帖最后由 as7810 于 2023-3-8 12:11 编辑

跨域,开发阶段自己可以用josnp  ,正式的后端用楼主好像叫cors   前端用的好像是 代{过}{滤}理(转发)
zldtb19931116 发表于 2023-3-8 13:19
最简单的方法是nginx 反向代{过}{滤}理一下
lsy_loren 发表于 2023-3-8 13:49
开发的时候使用devServer代{过}{滤}理,如果是生产一般都会使用同一个域名代{过}{滤}理。不建议直接在服务端放开。
woyaoxuexi 发表于 2023-3-8 20:01
基本上不建议使用cors的方式了,现在流行反向代{过}{滤}理的方式。开发方式参考楼上的在devServer中配置,生产环境使用nginx等web服务提供反向代{过}{滤}理服务。
zy524488 发表于 2023-3-9 13:21
另外尽量不要设置成 * ,如果有的系统扫描漏洞的话,这也是一种漏洞
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 03:06

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表