Tomcat

在 PUT 上測試 Spring Boot API 會導致 HTTP 405(不允許的方法)

  • March 22, 2022

我創建了一個部署到 Tomcat 伺服器的 API。在開發過程中,我會從 Eclipse 啟動應用程序並使用 Postman 測試端點。在 Eclipse 中,應用程序執行良好。我會看到我的機器人(使用 Selenium WebDriver 創建)啟動、點擊目標頁面、點擊腳本元素並完成該過程。

我修改了 POM 以建構我使用 Tomcat Manager App 頁面手動部署的 WAR 文件。據我所知,已部署的 WAR 執行良好。我決定使用 Postman 執行相同的測試;顯然將“localhost”更改為實際的IP地址和埠。不幸的是,我收到了這個 HTTP 405 錯誤,我不知道為什麼。我認為需要在 Tomcat 中配置一些東西,但我不知道具體需要做什麼。

我根據這個配置了Tomcat,仍然沒有運氣: http: //www.codereye.com/2010/12/configure-tomcat-to-accept-http-put.html

預設情況下,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&gt;PUT&lt;/http-method>
   &lt;/web-resource-collection&gt;
   &lt;auth-constraint&gt;
       &lt;role-name&gt;#####&lt;/role-name&gt;
   &lt;/auth-constraint&gt;
&lt;/security-constraint&gt;

對 tomcat-users.xml 文件的更改

  1. 需要添加使用者和角色以匹配添加的安全約束
&lt;user name="#####" password="#####" roles="#####" /&gt;

引用自:https://serverfault.com/questions/1095702