Tan*_*hur 6 java spring-security spring-boot
我已经在spring boot应用程序上开发了rest API。API仅接受GET和POST,但在使用OPTIONS方法请求时,API会响应200状态(而不是405)。我用谷歌搜索了这个问题,但是没有一个解决方案是基于springboot的。
响应:
Allow: OPTIONS, TRACE, GET, HEAD, POST
Public: OPTIONS, TRACE, GET, HEAD, POST
Run Code Online (Sandbox Code Playgroud)
需要禁用OPTIONS方法。
先前的答案仅适用于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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
注意:假设此类由Spring组成。如果没有,您可以使用此处详细介绍的其他注册方法。
| 归档时间: |
|
| 查看次数: |
8037 次 |
| 最近记录: |