在Spring Boot中,我们可以通过几种方式为接口添加白名单限制:
- 使用@CrossOrigin注解:
@RestController
@RequestMapping("/api")
public class TestController {
@CrossOrigin(origins = "http://example.com")
@GetMapping("/test")
public String test() {
return "Hello";
}
}
这个接口只允许example.com域名的请求访问。
- 全局跨域配置:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOrigins("http://example.com")
.allowedMethods("GET", "POST");
}
}
这个配置会使所有/api/**接口只允许example.com域名的GET和POST请求访问。
- 使用过滤器添加白名单:
@Component
public class CorsFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
response.setHeader("Access-Control-Allow-Origin", "http://example.com");
response.setHeader("Access-Control-Allow-Methods", "GET, POST");
filterChain.doFilter(request, response);
}
}
这个过滤器会为所有请求添加跨域头,只允许example.com域名的GET和POST请求访问。
- 在网关层添加全局跨域配置和白名单: 如果使用了API网关,我们也可以在网关层添加跨域配置和白名单,从而实现对所有微服务接口的控制。
通过以上几种方式,我们可以有效地为Spring Boot中的接口添加白名单限制。请 let me know 如果您有任何其他问题!