![在 PUT 上测试 Spring Boot API 导致 HTTP 405(方法不允许)](https://linux22.com/image/775599/%E5%9C%A8%20PUT%20%E4%B8%8A%E6%B5%8B%E8%AF%95%20Spring%20Boot%20API%20%E5%AF%BC%E8%87%B4%20HTTP%20405%EF%BC%88%E6%96%B9%E6%B3%95%E4%B8%8D%E5%85%81%E8%AE%B8%EF%BC%89.png)
我创建了一个 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 文件的更改
- 需要添加
readonly=false
参数
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
- 需要为角色添加安全约束
<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 文件的更改
- 需要添加用户和角色以匹配添加的安全约束
<user name="#####" password="#####" roles="#####" />