当前位置: 首页 > 知识库问答 >
问题:

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

姬熙云
2023-03-14

我在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方法。

共有1个答案

颜安宁
2023-03-14

前面的答案是只针对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的componentscanned。如果没有,您可以使用其他注册方法,如这里详细说明。

 类似资料:
  • 我试图在SpringMVC中运行SpringBoot应用程序,在SpringMVCPOM中添加SpringBoot应用程序依赖项,并扫描SpringBoot包,但我面临以下问题

  • 集成测试: 当我偶尔运行这个测试时,一切都很好,但是当我和其他测试一起运行它时,没有使用模拟的ServerThroughRabbitMQ,所以一些spring缓存强制使用旧的rabbit侦听器。 我试图调试它,我可以看到,正确的bean被autowired到测试中,但由于某些原因旧监听器使用(旧bean字段instanceID=1新mocked bean instanceID=3),测试失败(不确

  • 我是kubernetes的新手,需要在openshift平台上使用k8s confimap将springboot应用程序的属性文件外部化。我已将属性文件保存在git repo中,作为“greeter.message=Spring Bootmyapplication.properties已在库伯内特斯上挂载为卷!”并使用“oc create confimap myconfig--from-file=

  • 我试图在我的基于微服务的Spring启动应用程序中实现普罗米修斯,部署在weblogic服务器上。作为POC的一部分,我已经将配置作为一场战争的一部分。为了启用它,我在下面设置了配置- 应用属性 格拉德尔- 但执行器请求被现有的拦截器阻止。它要求在特定于我们项目的标题中传递值。通过postman(http:localhost:8080/abc/activator/prometheus),我可以测试

  • 我有Kafka Streams java应用程序启动并运行。我试图使用KSQL创建简单的查询,并使用Kafka流来实现复杂的解决方案。我希望将KSQL和Kafka流作为Java应用程序运行。 我打算通过https://github.com/confluentinc/ksql/blob/master/ksqldb-examples/src/main/java/io/confluent/ksql/em

  • 我已经为Postgresql启用了复制,并且正在使用PGPool进行负载平衡。 我在使用HikariCP甚至Apache DBCP连接到Postgres时遇到了问题。 在SpringBoot应用程序中有没有使用PGPool的方法? 请查找堆栈跟踪: 2018-08-10 10:20:19.124信息37879----[main]com.zaxxer.hikari.hikaridatasource: