在 PUT 上测试 Spring Boot API 导致 HTTP 405(方法不允许)

在 PUT 上测试 Spring Boot API 导致 HTTP 405(方法不允许)

我创建了一个 API,并将其部署到 Tomcat Server。在开发过程中,我会从 Eclipse 启动应用程序并使用 Postman 测试端点。从 Eclipse 中,应用程序运行良好。我会看到我的机器人(使用 Selenium WebDriver 创建)启动、访问目标页面、单击脚本元素并完成该过程。

我修改了 POM 以构建一个 WAR 文件,并使用 Tomcat Manager App 页面手动部署了该文件。据我所知,WAR 已部署并且运行良好。我决定使用 Postman 运行相同的测试;显然将“localhost”更改为实际 IP 地址和端口。不幸的是,我收到此 HTTP 405 错误,但我不知道原因。我假设需要在 Tomcat 中进行一些配置,但我不知道具体需要做什么。

我按照这个配置了 Tomcat,但仍然没有成功:http://www.codereye.com/2010/12/configure-tomcat-to-accept-http-put.html

答案1

Tomcat 默认未启用 HTTP PUT 命令。

我必须通过修改 web.xml 和 tomcat-users.xml 文件来配置 Tomcat。

对 web.xml 文件的更改

  1. 需要添加readonly=false参数
<init-param>
    <param-name>readonly</param-name>
    <param-value>false</param-value>
</init-param>
  1. 需要为角色添加安全约束
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Demo App</web-resource-name>
        <url-pattern>/*</url-pattern>
        <http-method>PUT</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>#####</role-name>
    </auth-constraint>
</security-constraint>

对 tomcat-users.xml 文件的更改

  1. 需要添加用户和角色以匹配添加的安全约束
<user name="#####" password="#####" roles="#####" />

相关内容