Springboot使用cors解决跨域问题
首先我们启动两个项目 一个8080 一个8081
8080提供一个hello接口 非常的简单
8081写一个静态页面进行访问
8080java代码
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello(Model model){
return "hello";
}
}
8081静态页面代码
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="jq.js"></script>
</head>
<body>
<div id="app"></div>
<button onclick="getData()">请求</button>
<script>
function getData(){
$.get("http://localhost:8080/hello",function (msg) {
$("#app").html(msg)
})
}
</script>
</body>
</html>
我们进行访问 点请求
我们可以看到报了个错No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
这就是典型的跨域问题
下面我们使用cors从后端进行解决 大家其实都知道 很多时候呢我们都是吧跨域认为是前端的问题 确实是前端的问题,但是呢 我们后端也是可以解决的 那么很简单 我们只需要一个注解即可解决
@RestController
public class HelloController {
@GetMapping("/hello")
@CrossOrigin(origins = "http://localhost:8081")
public String hello(Model model){
return "hello";
}
}
我们在这个方法上加一个CrossOrigin这个注解 给origins一个可访问的ip即可
这样我们就解决了跨域问题
但是呢 现在是解决了这个hello的借口的问题
那么其他的呢
这个注解也可以放在类上面的 那么在这个类里面的接口都是可以被访问的
那么再其他的呢
当然可以 做一个全局的配置 我们需要写一个class来重写他默认的配置
@Configuration
public class WebMavConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
//所以的接口都是可以的 //所有的人都是可以访问的
registry.addMapping("/**").allowedOrigins("*")
//所有的头都可以访问
.allowedHeaders("*")
//所有的方法都可以访问
.allowedMethods("*");
}
}
我写在这儿了 就不过解释了 注释很清楚
//所有的方法都可以访问
.allowedMethods("*");
}
}
我写在这儿了 就不过解释了 注释很清楚
那么好 我是梦凡 加油!