如果你想在Spring中允许来自特定域名(比如a.com
和b.com
)的跨域请求,你可以在以下几种方法中进行配置。
1. 使用@CrossOrigin
注解
在控制器或方法上配置多个允许的来源:
@CrossOrigin(origins = {"http://a.com", "http://b.com"})
@RequestMapping(value = "getIp")
public String getName(HttpServletRequest request) {
return IPAddressUtil.getDirectClientIp(request);
}
这个配置会允许来自 http://a.com
和 http://b.com
的跨域请求。
2. 全局配置通过WebMvcConfigurer
通过实现WebMvcConfigurer
接口进行全局配置,允许a.com
和b.com
进行跨域访问:
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 WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**") // 允许的路径
.allowedOrigins("http://a.com", "http://b.com") // 允许的域
.allowedMethods("GET", "POST"); // 允许的HTTP方法
}
}
3. Spring Boot 配置文件
如果你使用Spring Boot,可以在application.properties
或application.yml
文件中配置CORS:
在application.properties
中:
spring.mvc.cors.allowed-origins=http://a.com,http://b.com
spring.mvc.cors.allowed-methods=GET,POST
在application.yml
中:
spring:
mvc:
cors:
allowed-origins: "http://a.com,http://b.com"
allowed-methods: "GET,POST"
结论
使用以上任何一种方式,你可以允许来自 http://a.com
和 http://b.com
的跨域请求。@CrossOrigin
适用于局部方法或控制器,而全局配置(通过WebMvcConfigurer
或配置文件)适用于整个应用程序。
评论区