本文介绍: 跨域资源共享,Cross-Origin Resource Sharing,简拼为 CORS,是一种基于 HTTP 头信息的机制,通过允许服务器标识除了它自己以外的资源,从而实现跨域访问。这都是因为浏览器同源策略,为了保证浏览器安全,防止恶意网站攻击浏览器限制了从不同源之间的交互。在不同源的情况下,无法发送Ajax请求,如果请求浏览器就会报错这里我的前端跑在8081端口下,后端跑在8080端口上 ,虽然协议域名都相同,但是端口号不同,这种情况就是跨域问题了,所以前端页面向后端发送请求就报错了。

先说说什么是跨域

请求的URL地址中的协议域名端口号中的任意一个与当前URL不同就是跨域

 比如:

当前页面的URL 请求的URL 是否跨域 原因
htttp://localhost:8080 htttps://localhost:8080 协议不同
htttp://localhostll:8080 htttp://localhost:8080 域名不同
htttp://localhost:8080 htttp://localhost:8081 端口号不同

那么,为什么会出现跨域问题

这都是因为浏览器的同源策略,为了保证浏览器安全,防止恶意网站攻击浏览器限制了从不同源之间的交互。在不同源的情况下,无法发送Ajax请求,如果请求,浏览器就会报错

这里我的前端跑在8081端口下,后端跑在8080端口上 ,虽然协议域名都相同,但是端口号不同,这种情况就是跨域问题了,所以前端页面向后端发送请求就报错了。

这里有三种解决方案,且都是后端的解决方案:

报错信息截图:

SpringBoot项目中解决跨域的3中方案:

第一种: 在目标方法添加@CrossOrigin注解

 

 

 

添加注解后,重新启动项目前端发送请求,后端接收到请求后并成功响应了请求。

 

 第二种:开启跨域资源共享

跨域资源共享,Cross-Origin Resource Sharing,简拼为 CORS,是一种基于 HTTP 头信息的机制,通过允许服务器标识除了它自己以外的资源,从而实现跨域访问。

添加一个配置类就ok了。

@Configuration
public class CorsConfig {

    @Bean
    public CorsFilter corsFilter(){
        CorsConfiguration configuration = new CorsConfiguration();
        //设置允许的域名
        configuration.addAllowedOrigin("*");
        //设置原始头信息
        configuration.addAllowedHeader("*");
        //设置允许所有的请求方法跨域调用
        configuration.addAllowedMethod("*");
        //创建source对象
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        //添加映射路径
        source.registerCorsConfiguration("/**",configuration);
        return new CorsFilter(source);
    }
}

 

三种: 实现WebMvcConfigurer接口重写addCorsMappings方法

@Configuration
public class CorsConfiguration implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("GET","DELETE","PUT","POST","HEAD","OPTIONS")
                .allowCredentials(true)
                .allowedHeaders("*");
    }
}

 

 

 

 

 

 

原文地址:https://blog.csdn.net/weixin_52954183/article/details/134673352

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_5039.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注