Nginx Error 405: 簡單解決方法

HTTP Error 405錯誤代碼表示所請求的HTTP方法不支援所要求的資源。當伺服器遇到不允許或不支援的HTTP方法時,就會返回405錯誤。

換言之,伺服器在說明所請求的方法(在這種情況下是POST請求)不允許使用在所要求的資源(例如特定的URL或網頁)上。

我自己在建設nodejs後端, 使用reactjs axios請求api時出現 Error 405。在stackover flow搜尋各種方法後,有些方法可以不報錯例如直接nginx 設定 return 200;

不過我的POST請求是用於檢查帳號登入,直接return 200使任何輸入都能夠登入帳號。經過一番嘗試最後得到以下解決方法,沒有Error 405,也不會造成任何人都可以登入的情況。

解決方法:

檢查伺服器配置:可能伺服器沒有設定支援你嘗試使用的HTTP方法。在這種情況下,你可能需要聯繫伺服器管理員或託管服務提供商尋求協助。

要在Nginx中允許所有方法,你需要修改Nginx配置文件中的位置區塊。以下是如何執行的範例:

location /api {

add_header ‘Access-Control-Allow-Methods’ ‘GET, POST, OPTIONS, PUT, DELETE’;

}

此外,還應在 /api 位置中添加以下行以允許所有方法:

if ($request_method = ‘OPTIONS’) {

add_header ‘Access-Control-Allow-Origin’ ‘*’;

add_header ‘Access-Control-Allow-Methods’ ‘GET, POST, OPTIONS, PUT, DELETE’;

add_header ‘Access-Control-Allow-Headers’

‘DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range’;

add_header ‘Access-Control-Max-Age’ 1728000;

add_header ‘Content-Type’ ‘text/plain; charset=utf-8’;

add_header ‘Content-Length’ 0; return 204;

}

這將允許在指定的位置(在這種情況下是 /api )使用所有方法(GET、POST、PUT、DELETE和OPTIONS)。

在進行這些更改後,請不要忘記重新啟動Nginx以應用更改。