什么是 CORS?
CORS,全称是“跨源资源共享”(Cross-Origin Resource Sharing),是一种Web应用程序的安全机制,用于控制不同源的资源之间的交互。
在Web应用程序中,CORS定义了一种机制,通过该机制,浏览器能够限制哪些外部网页可以访问来自不同源的资源。源由协议、域名和端口组成。当一个网页请求另一个网页上的资源时,浏览器会检查请求是否符合CORS规范,以确定是否允许该请求。
CORS的工作原理是:当浏览器发送一个跨域请求时,它会附加一些额外的头部信息到请求中,这些头部信息包含了关于请求的来源和目的的信息。服务器可以检查这些头部信息并决定是否允许该请求。如果服务器允许请求,它会返回一个响应,其中包含一个名为“Access-Control-Allow-Origin”的头部信息,该信息指定了哪些源可以访问该资源。浏览器会检查返回的“Access-Control-Allow-Origin”头部信息,以确定是否允许该跨域请求。
通过使用CORS,开发人员可以控制哪些外部网页可以访问他们的资源,从而提高应用程序的安全性。
Spring Boot 如何配置 CORS
Spring Boot对于跨域请求的支持可以通过两种配置方式来实现:
- 注解配置:可以使用@CrossOrigin注解来启用CORS。例如,在需要支持跨域请求的方法上添加@CrossOrigin注解,并配置好origins和maxAge等参数。
- 全局配置:可以通过实现WebMvcConfigurer接口并注册一个WebMvcConfigurer bean来配置CORS的全局设置。在实现类中覆盖addCorsMappings方法,通过CorsRegistry对象添加映射规则。默认情况下,所有方法都支持跨域,并且GET、POST和HEAD请求是被允许的。如果需要自定义,可以配置CorsRegistry对象来指定允许的域名、端口和请求方法等。
- 过滤器配置:可以通过
CorsFilterbean来配置CORS的过滤器。这种方式可以更加灵活地控制CORS的配置,例如只允许特定的域名进行跨域访问等。
前端代码
request.ts
import axios from "axios";
const myAxios = axios.create({
baseURL: process.env.VUE_APP_API_BASE_URL,
timeout: 10000,
// 携带cookie
withCredentials: true,
});
// 添加请求拦截器
myAxios.interceptors.request.use(
function (config) {
// 在发送请求之前做些什么
return config;
},
function (error) {
// 对请求错误做些什么
return Promise.reject(error);
}
);
// 添加响应拦截器
myAxios.interceptors.response.use(
function (response) {
// 2xx 范围内的状态码都会触发该函数。
// 对响应数据做点什么
return response;
},
function (error) {
// 超出 2xx 范围的状态码都会触发该函数。
// 对响应错误做点什么
return Promise.reject(error);
}
);
export default myAxios;
user.ts
import myAxios from "@/utils/request";
/**
* 获取用户列表
* @param username
*/
export const searchUsers = async () => {
return myAxios.request({
url: `/admin/findAll`,
method: "GET",
});
};
};
vue页面使用
<script setup lang="ts">
import { searchUsers } from "@/api/user";
searchUsers().then((res) => {
console.log(res);
});
</script>
一、 在 Controller 上添加 @CrossOrigin 注解
这种方式适合只有一两个rest接口需要跨域或者没有网关的情况下
@RestController
@Cr

419

被折叠的 条评论
为什么被折叠?



