場景: 對外接口在只有通過GET請求才能獲取到頁面數據,但是第三方請求通過Form表單將這個接口的請求通過POST方式來請求,所以出現 405 的報錯,第三方那邊不可能改,因此只有我們強制將POST請求轉成GET請求。
場景一:
本地訪問沒有設置過代理,location中只有root設定的字段,這時可以用return加301或者302狀態碼結合proxy將請求轉過去即可
##在nginx中增加如下配置即可
error_page 405 =200 @405;
location @405 {
proxy_method GET;
return 301 https://${server_name}$request_uri;
#error_page 405 =200 https://$host$request_uri; #網上有這種,我沒有試過
}
備註:
301 是永久重定向
302 是臨時重定向
場景二:前端請求是通過代理過來的,這時直接使用代理將請求轉發過去即可
error_page 405 =200 @405;
location @405 {
proxy_method GET;
proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://test_server;
}
我當時嘗試用rewrite重寫,後來發現不行,所以用 proxy 方式