HTTP 400 Bad request 原因
阿新 • • 發佈:2020-07-16
宣告
轉自:HTTP 400 Bad request 原因
正文
我的程式碼部署在Linux測試環境,我在使用HttpClient
傳送http
請求時遇到問題,請求報 400 Bad request。網上都在說下面這兩個原因。
400 是 HTTP 的狀態碼之一,主要有兩種形式:
1、bad request:意思是 "錯誤的請求";
2、invalid hostname:意思是 "不存在的域名"。
解釋:
400 Bad Request 是由於明顯的客戶端錯誤(例如,格式錯誤的請求語法,太大的大小,無效的請求訊息或欺騙性路由請求),伺服器不能或不會處理該請求。
在 ajax 請求後臺資料時比較常見。產生 HTTP 400 錯誤的原因有:
1、前端提交資料的欄位名稱或者是欄位型別和後臺的實體類不一致,導致無法封裝;如需要 int,客戶端傳的是 String
2、前端提交的到後臺的資料應該是 json 字串型別,而前端沒有將物件轉化為字串型別;
解決方法:
1、對照欄位名稱,型別保證一致性
2、使用 stringify 將前端傳遞的物件轉化為字串:即 data: JSON.stringify(param);
拿我第一個呼叫的介面來說,我只需要傳一個String
型別的引數,也不需要json
型別,所以不符合我的情況,我的程式碼沒有出現以上兩種問題,所以貌似還有別的原因。
我是通過代理伺服器來訪問的HTTP
介面。在本地除錯的時候沒有走代理,沒有遇到該問題。所以從這裡出發查詢問題,最後解決了400的錯誤。
原因是我走代理的時候用的是HTTP
協議,而目標地址是HTTPS
的,所以我把目標地址改為 HTTP (也支援 HTTP )的試了一下就好了。