gpt4 book ai didi

java - 在 spring boot 应用程序中禁用 HTTP OPTIONS 方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:08:25 36 4
gpt4 key购买 nike

我在 spring boot 应用程序上开发了 rest API。 API 仅接受 GET 和 POST,但在使用 OPTIONS 方法请求时,API 响应 200 状态(而不是 405)。我用谷歌搜索了这个问题,但没有一个解决方案是基于 springboot 的。

响应:

Allow: OPTIONS, TRACE, GET, HEAD, POST
Public: OPTIONS, TRACE, GET, HEAD, POST

需要禁用 OPTIONS 方法。

最佳答案

Previous answer仅适用于 tomcat,因此也添加我的。例如,您可以使用标准的 servlet 过滤器来禁用方法跨容器:

import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;

@Component
public class MethodFilter extends OncePerRequestFilter {

@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
if (request.getMethod().equals("OPTIONS")) {
response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
} else {
filterChain.doFilter(request, response);
}
}
}

注意:假设这个类是被Spring扫描过的components。如果没有,可以使用其他注册方式,详情in here .

关于java - 在 spring boot 应用程序中禁用 HTTP OPTIONS 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42367975/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com