Spring Boot如何通过CORS处理跨域问题
作者:繁华乱世 时间:2021-09-10 02:44:15
跨域的产生就是因为浏览器的同源策略。它是浏览器的核心安全功能,所谓的同源,就是指域名,协议,还有端口要相同。传统的方案就是JSONP(前端处理方案),但是JSONP有很大的局限性,就是只支持GET请求,所以不能满足我们的需求,而CORS(Cross-origin-resource sharing)跨域资源共享,就可以解决这个问题。他是一个浏览器规范,一个w3c标准,提供web服务从不同网域传来的沙盒脚本的方法,避开了浏览器的同源策略。
CORS是后端的一种处理的方案,在Spring中可以配置解决跨域,在Spring Boot中它的配置变得很简单,只需要在你controller方法上加一个注解@CrossOrigin(origins="你的请求地址")就好了。
跨域资源共享(CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。当一个资源从与该资源本身所在的服务器不同的域、协议或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。
比如,站点 http://domain-a.com 的某 HTML 页面通过 <img> 的 src 请求 http://domain-b.com/image.jpg。网络上的许多页面都会加载来自不同域的CSS样式表,图像和脚本等资源。
出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求。 例如,XMLHttpRequest和Fetch API遵循同源策略。 这意味着使用这些API的Web应用程序只能从加载应用程序的同一个域请求HTTP资源,除非响应报文包含了正确CORS响应头。
如果方法百十来个,那这种的就不适用,因此可以做一个全局配置,统一处理
@Configuration
//ctrl+o找一下这个方法
public class WebMVcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("**").allowedOrigins("http://localhost:8081")
.allowedHeaders("*")
.allowedMethods("*")
.maxAge(30*1000);
}
}
后端代码处理的话就是这样,但是还有其他方法,例如nginx,例如node.js,都可以处理,但是这两个第三方工具的用处很多,如果仅仅局限在处理跨域,那就有点大材小用。
来源:https://www.cnblogs.com/javazl/p/12641452.html
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Flutter加载图片的多样玩法汇总
![](https://img.aspxhome.com/file/2023/1/108291_0s.png)
浅析Java中的异常处理机制
C#实现将汉字转化为2位大写的16进制Unicode的方法
springboot开启声明式事务的方法
SpringBoot执行定时任务@Scheduled的方法
MyBatis-Plus不使用数据库默认值的问题及解决
![](https://img.aspxhome.com/file/2023/9/59499_0s.png)
springboot配置文件中属性变量引用方式@@解读
![](https://img.aspxhome.com/file/2023/6/59506_0s.png)
通过实例解析Spring Ioc项目实现过程
![](https://img.aspxhome.com/file/2023/5/59745_0s.png)
WebSocket实现Web聊天室功能
![](https://img.aspxhome.com/file/2023/9/60189_0s.jpg)
Linux下g++编译与使用静态库和动态库的方法
![](https://img.aspxhome.com/file/2023/2/68232_0s.jpg)
Java文件操作之按行读取文件和遍历目录的方法
java语言图形用户登录界面代码
![](https://img.aspxhome.com/file/2023/6/64216_0s.jpg)
mybatis-plus分页查询的实现示例
![](https://img.aspxhome.com/file/2023/5/60025_0s.png)
java调用Restful接口的三种方法
java Spring的启动原理详解
![](https://img.aspxhome.com/file/2023/4/66244_0s.jpg)
使用@pathvariable与@requestparam碰到的一些问题及解决
![](https://img.aspxhome.com/file/2023/9/60459_0s.png)
SpringCloud远程服务调用三种方式及原理
![](https://img.aspxhome.com/file/2023/8/67438_0s.png)
SpringBoot实现PPT格式文件上传并在线预览功能
![](https://img.aspxhome.com/file/2023/3/57403_0s.png)
Java CompletableFuture实现多线程异步编排
![](https://img.aspxhome.com/file/2023/0/57710_0s.jpg)