跨域是浏览器的安全策略,为什么需要在后端进行控制
跨域(CORS)确实是浏览器的安全策略,目的是防止恶意网站随意访问其他域的数据。浏览器会在前端请求时自动检查“跨域”规则。
但是否允许跨域访问,最终是由后端服务器决定的。后端通过设置响应头(如 Access-Control-Allow-Origin)告诉浏览器“我允许你跨域访问”。如果后端没有设置这些头,浏览器就会拦截响应,前端拿不到数据。
后端如何做跨域控制
后端在WebConfig里实现org.springframework.web.servlet.config.annotation.WebMvcConfigurer 类,并且重写addCorsMappings 方法,具体代码如下:
/**
* 跨域配置
* 注意:allowedOriginPatterns("*") 和 allowCredentials(true) 不能同时使用
* 如果需要允许凭证,请将 allowedOriginPatterns("*") 改为具体的域名列表
*/
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
// 允许的源(域名),* 表示允许所有源
// 生产环境建议指定具体域名,例如:.allowedOriginPatterns("http://localhost:3000", "https://yourdomain.com")
.allowedOriginPatterns("*")
// 允许的HTTP方法
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS", "PATCH")
// 允许的请求头
.allowedHeaders("*")
// 允许暴露的响应头(前端可以访问的响应头)
.exposedHeaders("*")
// 预检请求的缓存时间(秒)
.maxAge(3600);
}