HTTP 400 Bad request 原因
我的代碼部署在Linux測(cè)試環(huán)境,我在使用 HttpClient 發(fā)送http請(qǐng)求時(shí)遇到問題,請(qǐng)求報(bào) 400 Bad request。網(wǎng)上都在說下面這兩個(gè)原因。
400 是 HTTP 的狀態(tài)碼之一,主要有兩種形式:
1、bad request:意思是 "錯(cuò)誤的請(qǐng)求";
2、invalid hostname:意思是 "不存在的域名"。
解釋:
400 Bad Request 是由于明顯的客戶端錯(cuò)誤(例如,格式錯(cuò)誤的請(qǐng)求語法,太大的大小,無效的請(qǐng)求消息或欺騙性路由請(qǐng)求),服務(wù)器不能或不會(huì)處理該請(qǐng)求。
在 ajax 請(qǐng)求后臺(tái)數(shù)據(jù)時(shí)比較常見。產(chǎn)生 HTTP 400 錯(cuò)誤的原因有:
1、前端提交數(shù)據(jù)的字段名稱或者是字段類型和后臺(tái)的實(shí)體類不一致,導(dǎo)致無法封裝;如需要 int,客戶端傳的是 String
2、前端提交的到后臺(tái)的數(shù)據(jù)應(yīng)該是 json 字符串類型,而前端沒有將對(duì)象轉(zhuǎn)化為字符串類型;
解決方法:
1、對(duì)照字段名稱,類型保證一致性
2、使用 stringify 將前端傳遞的對(duì)象轉(zhuǎn)化為字符串:即 data: JSON.stringify(param);
拿我第一個(gè)調(diào)用的接口來說,我只需要傳一個(gè)String類型的參數(shù),也不需要 json 類型,所以不符合我的情況,我的代碼沒有出現(xiàn)以上兩種問題,所以貌似還有別的原因。
我是通過代理服務(wù)器來訪問的 HTTP 接口。在本地調(diào)試的時(shí)候沒有走代理,沒有遇到該問題。所以從這里出發(fā)查找問題,最后解決了400的錯(cuò)誤。
原因是我走代理的時(shí)候用的是 HTTP 協(xié)議,而目標(biāo)地址是 HTTPS 的,所以我把目標(biāo)地址改為 HTTP (也支持 HTTP )的試了一下就好了。
總結(jié)
以上是生活随笔為你收集整理的HTTP 400 Bad request 原因的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python设置循环范围_python
- 下一篇: 调用wasm_PDX Utopia区块链