【发布时间】:2022-10-15 02:41:17
【问题描述】:
有什么方法可以覆盖我的 Spring Boot 应用程序中的 isPreFlightRequest 吗?根据文档,我们不能覆盖静态方法,所以我想知道是否有其他方法可以重写它,以便编译器不会到达这里。
public abstract class CorsUtils {
/**
* Returns {@code true} if the request is a valid CORS one by checking {@code Origin}
* header presence and ensuring that origins are different via {@link #isSameOrigin}.
*/
@SuppressWarnings("deprecation")
public static boolean isCorsRequest(ServerHttpRequest request) {
return request.getHeaders().containsKey(HttpHeaders.ORIGIN) && !isSameOrigin(request);
}
/**
* Returns {@code true} if the request is a valid CORS pre-flight one by checking {code OPTIONS} method with
* {@code Origin} and {@code Access-Control-Request-Method} headers presence.
*/
public static boolean isPreFlightRequest(ServerHttpRequest request) {
HttpHeaders headers = request.getHeaders();
return (request.getMethod() == HttpMethod.OPTIONS
&& headers.containsKey(HttpHeaders.ORIGIN)
&& headers.containsKey(HttpHeaders.ACCESS_CONTROL_REQUEST_METHOD));
}
【问题讨论】:
-
你可以在实现中“隐藏”它,但是你需要确保你正确地声明了你的实例。
-
你想让我做什么 ?设置 CORS 或使用 mock 进行一些测试?使用 PowerMock,您可以进行测试。 CORS 可以并且必须使用 Spring Security 配置进行配置,即
-
我希望用 return false 对其进行硬编码
-
它是春季版本升级@VictorGubin的一个错误,我只想以某种方式从这个新函数返回false。上个版本没有这个功能
-
允许一切?在这种情况下,唯一的方法是使用 ASM/CGLIB 在类加载器级别替换类。严格不推荐,CORS 保护确实很重要,这首先是安全劫持预防。如果有的话,您将无法通过安全扫描。
标签: java spring-boot abstract-class