前言
最近同事詢問一個問題,他們的系統在內部使用時,都沒有問題。
但是,如果透過外網連接使用時,卻會發生錯誤,但在 AP 卻找不到 Log 。
透過外網連接時,只是多透過了 Web Application Firewall (WAF) 。
透過 Chrome 的網路來看發現,透過 JS 透過 PUT 呼叫 Server API 時,卻回 400 的狀態,沒有任何的內容。
研究
內部網路使用正常,透過 WAF 卻出現 400 的狀況,而且 AP 也沒有收到那支程式 Request 的資料。
這顯然所有的事都指向了 WAF ,後來同事詢問客戶後發現, WAF 只允許 GET 及 POST 。
即然知道了限制,所以同事就依限制來調整程式。
如果是 ASP.NET Core 的話,則可以使用 app.UseHttpMethodOverride() 來讓 Client 端透過 post 的對應到 Server API 的 put 哦!
詳細請參考:How to Allow HTTP Method Override ASP Dotnet Core
參考資料
HttpMethodOverrideExtensions.UseHttpMethodOverride Method
How to Allow HTTP Method Override ASP Dotnet Core