第6步 跨域请求
什么是跨越
现在前后端分离的模式决定了前端代码或者浏览器需求请求不同来源的数据,因此我们在项目中开启 跨域请求。这样可以让不同的客户端调用我们的接口程序。
配置CORS(跨域请求)
1、使用@CrossOrigin注解
你可以直接在Controller类或者具体的请求处理方法上使用@CrossOrigin注解来允许跨域请求。
@RestController
@RequestMapping("/user")
@CrossOrigin(origins = "*") // 允许所有来源的请求跨域
public class UserController {
// ...
}
在这个例子中,@CrossOrigin注解被添加到了控制器类上,表示这个控制器下的所有方法都允许来自http://example.com的GET和POST请求。你也可以将注解添加到特定的方法上,以对该方法应用CORS配置。
2、全局配置CORS
如果你希望全局配置CORS,而不是在每个Controller或方法上单独配置,你可以创建一个配置类来实现WebMvcConfigurer接口,并重写addCorsMappings方法。
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
// 添加映射路径
registry.addMapping("/**")
.allowedOrigins("*") // 允许哪些域的请求,星号代表允许所有
.allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE") // 允许的方法
.allowedHeaders("*") // 允许的头部设置
.allowCredentials(false) // 是否发送cookie
.maxAge(168000); // 预检间隔时间
}
}
在这个配置中:
addMapping("/**")表示对所有的路径都应用CORS配置。*
allowedOrigins("")表示允许所有来源的访问,这在生产环境中可能不是最佳实践,通常你会指定具体的域名。
allowedMethods定义了允许的HTTP方法,allowedHeaders定义了允许的HTTP头部,allowCredentials(true)表示是否允许携带凭证(cookies, HTTP认证及客户端SSL证明等),
maxAge则用于设置预检请求的有效期。
