HTTP 400 Bad request 原因


聲明

轉自: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 )的試了一下就好了。

說的再好,不如行動。不怕慢,就怕站。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM