最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php接口報錯解決分析記錄

 更新時間:2023年10月25日 10:08:48   作者:Totn  
記一次解決php接口報錯 The GET method is not supported for this route. Supported methods: POST.的bug,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

問題表現(xiàn)

服務器上部署了兩套相同代碼的項目A和B,分別以不同的域名訪問,提交代碼時同步更新。以POST方式請求某個特定接口時,A能夠正常響應,B卻無論如果都是報錯The GET method is not supported for this route. Supported methods: POST.奇怪的是,本地開發(fā)是正常的,無法復現(xiàn)此bug, 線上服務器里A項目亦是正常訪問,B項目代碼與A完全相同,僅配置文件.env與域名授權(quán)文件不同。

搜索解決方法,嘗試

php artisan route:clear
php artisan route:cache

問題依舊,通過php artisan route:list打印出項目的所有路由,發(fā)現(xiàn)B項目的路由是正確的,推測問題可能與項目無關(guān);

打開B項目的Debug設置,顯示該報錯的追蹤路徑,發(fā)現(xiàn)框架對該請求的Method判斷為GET, 而該路由所定義方法為POST,所以直接拋出錯誤The GET method is not supported for this route. Supported methods: POST.問題查到這里陷入了死胡同,我無法理解為什么以POST發(fā)起的請求,流程達到框架中處理時, 請求的Method會變成GET;

糾結(jié)一天沒有結(jié)果。第二天判斷可能是nginx到框架過程中出的問題,嘗試調(diào)取Nginx的Access日志來判斷問題原因,終于發(fā)現(xiàn)

127.0.0.1 - - [02/Mar/2022:11:29:48 +0800] "POST /api_path/action_name HTTP/1.1" 301 162 "-" "PostmanRuntime/7.29.0"
127.0.0.1 - - [02/Mar/2022:11:29:49 +0800] "GET /api_path/action_name HTTP/1.1" 405 26147 "http://host_domain/api_path/action_name" "PostmanRuntime/7.29.0"

Nginx這里,POST請求被301重定向成GET,以GET去請求POST的路由當然會報錯;

而這個301則是寶塔環(huán)境自帶的“強制HTTPS”的設置導致,開啟該設置之后,nginx的配置文件會增加以下代碼

#HTTP_TO_HTTPS_START
if ($server_port !~ 443){
   rewrite ^(/.*)$ https://$host$1 permanent;
}

至此,關(guān)閉該“強制HTTS"的設置,問題解決。

后記:一般情況下301重定向強制HTTPS用于網(wǎng)站首頁為主,網(wǎng)站首頁一般情況下都是GET請求,自然也就不會存在POST變成GET的困擾。

關(guān)于301的POST轉(zhuǎn)GET問題,可以參考

以上就是php接口報錯解決分析記錄的詳細內(nèi)容,更多關(guān)于php接口報錯解決的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

瑞昌市| 阿坝| 莱阳市| 酒泉市| 东安县| 岳普湖县| 秦安县| 大化| 阜新| 通道| 曲阳县| 榆社县| 周至县| 宽甸| 重庆市| 普宁市| 旌德县| 乐亭县| 西乡县| 吴川市| 玉山县| 桐庐县| 芮城县| 兴业县| 饶河县| 闸北区| 和平县| 泗阳县| 华坪县| 迁西县| 龙岩市| 南华县| 偃师市| 宁南县| 贡山| 横峰县| 罗山县| 威信县| 芒康县| 福州市| 大田县|