springboot跨域CORS处理代码解析
作者:知识追寻者 时间:2022-07-29 21:12:20
这篇文章主要介绍了springboot跨域CORS处理代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
一 源(Origin)
源指URL的协议,域名,端口三部分组成,如果这个三个成分都相同,就判定是同源,否则为不同源。
同源策略(Same origin policy)是一种浏览器的约定,即在浏览器中禁止非同源访问。
二 CORS
CORS即"跨域资源共享"(Cross-origin resource sharing),是一个W3C标准。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了ajax只能同源使用的限制。springboot也提供了cors的解决方法。
下面将模拟浏览器跨域,并解决跨域问题。
三 provider工程
provider工程提供了一个接口给外部访问,端口是8080。
/**
* @Author lsc
* @Description <p> cors </p>
* @Date 2019/10/20 21:32
* @Version 1.0
*/
@RestController
public class ProviderController {
@GetMapping("youku1327")
public String getUser(){
System.out.println("---------");
return "hello youku1327";
}
}
四 consumer
consumer 提供访问页面,跨域亲求 provider接口,端口为8082。
控制层代码:
/**
* @Author lsc
* @Description <p> </p>
* @Date 2019/10/20 21:32
* @Version 1.0
*/
@Controller
public class ComsumerController {
@GetMapping("youku1327")
public String getUser(){
return "index";
}
}
页面代码:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>cors-youku1327</title>
</head>
<body>
<script th:src="@{jquery-1.8.3.js}" type="text/javascript"></script>
<button id="button">获得用户</button>
<script>
$("#button").click(function () {
$.ajax({
url: "http://localhost:8080/youku1327",
type: "get",
success:function (result) {
console.log(result);
}
})
});
</script>
</body>
</html>
五 跨域问题产生
两个项目分别启动后,在流量器中访问consumer,报错如下,不存在允许访问的请求头。
六解决方案
在provier实现WebMvcConfigurer接口,或者使用@CrossOrigin注解在方法上。
示例代码:
/**
* @Author lsc
* @Description <p> </p>
* @Date 2019/10/20 23:15
* @Version 1.0
*/
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://localhost:8082")
.allowCredentials(true)
.allowedMethods("GET", "POST", "DELETE", "PUT","PATCH")
.allowedHeaders("*");
}
}
来源:https://www.cnblogs.com/zszxz/p/12101305.html
标签:spring,boot,跨域,CORS,处理
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java 常量池的实例详解
2023-12-04 00:51:28
Java语言多线程终止中的守护线程实例
2023-11-25 07:48:52
详解 Corba开发之Java实现Service与Client
2023-09-23 03:42:48
![](https://img.aspxhome.com/file/2023/3/60183_0s.png)
C#中动态数组用法实例
2021-11-30 16:42:23
Java中初始化List集合的八种方式汇总
2021-09-20 22:31:54
详解APP微信支付(java后台_统一下单和回调)
2023-11-10 17:26:42
![](https://img.aspxhome.com/file/2023/3/59153_0s.png)
SpringBoot执行定时任务@Scheduled的方法
2022-08-13 03:43:31
一文搞懂MyBatis多数据源Starter实现
2023-07-19 03:34:22
![](https://img.aspxhome.com/file/2023/5/57525_0s.webp)
使用mybatis-plus的insert方法遇到的问题及解决方法(添加时id值不存在异常)
2023-11-12 19:25:55
![](https://img.aspxhome.com/file/2023/6/59606_0s.png)
SpringBoot请求处理之常用参数注解介绍与源码分析
2023-11-10 10:38:12
![](https://img.aspxhome.com/file/2023/8/59248_0s.png)
基于Java接口回调详解
2023-11-09 00:03:11
![](https://img.aspxhome.com/file/2023/4/59314_0s.png)
SpringCloud全面解析@FeignClient标识接口的过程
2023-08-05 12:34:44
java web返回中文乱码问题及解决
2023-08-25 08:23:08
![](https://img.aspxhome.com/file/2023/8/58328_0s.png)
JAVA中的Token 基于Token的身份验证实例
2023-11-09 18:05:09
常见的java面试题
2023-11-26 18:03:44
Java Socket编程(四) 重复和并发服务器
2022-06-29 07:07:06
Spring和SpringBoot之间的区别
2022-09-28 11:47:38
多线程(多窗口卖票实例讲解)
2021-09-02 02:47:26
![](https://img.aspxhome.com/file/2023/9/61159_0s.png)
如何使用Jenkins构建GIT+Maven项目
2021-11-18 04:42:52
![](https://img.aspxhome.com/file/2023/9/61839_0s.png)
java中Executor,ExecutorService,ThreadPoolExecutor详解
2023-10-31 10:50:56