① 前台JSON數據傳送數據到後台,報400錯誤怎麼解決
原因:
在SpringMVC中的Action中處理前台ajax請求傳過來的json數據直接轉成對應的實體類時出錯:400 Bad Request,後台也不報錯,400指的的是請求無效(請求有語法問題或者不能滿足請求)。
1:一般最常見的就是後台的實體類bean與前台穿過的類型不匹配,如你的javabean中有定義了Date類型和int類型的成員變數,導致轉化器在把json數據轉化成bean時不能轉化。
2:log4j的配置文件里錯誤將部分log打為Info級別所致
3:要返回json的卻忘了加@ResponseBody
4:ajax請求的連接後邊忘了加參數,如url:basePath + "kscj/unbill.do?jqid="+jqids
5:傳了非實體bean屬性的參數過來。
6:controller指定的參數名稱與前台不一致,如:使用了@RequestParam(value="userName")而前台必須指定該名稱
@RequestMapping("/hello.do")
public String hello(HttpServletRequest req,HttpServletResponse resp,@RequestParam(value="userName")String user ){
request.setAttribute("user", user);
return "hello";
}
也可以指定該參數是非必須的required=false,如:
@RequestMapping("/hello.do")
public String hello(HttpServletRequest req,HttpServletResponse resp,@RequestParam(value="userName",required=false)String user){
request.setAttribute("user", user);
return "hello";
}
解決方法:
1:把實體類的javabean里邊的類型都改成string類型,在配置SQL語句時用資料庫函數to_date或者to_number轉化的,如果再java中用到這個字元串類型的日期的話,有必要的話,就用For format=new SimpleDateFormat("yyyy-MM-dd"),format.parse()來轉換。
2:在對應的實體類的對應的非字元串類型的變數的setter方法中傳入string類型的,然後在里邊用SimpleDateFormat或者Integer進行轉化。
② HTTP 400 錯誤是什麼原因
HTTP400 Bad Request 表示語義有誤,當前請求無法被伺服器理解。除非進行修改,否則客戶端不應該重復提交這個請求;請求參數有誤。
解決方案:
1)對照欄位名稱,類型保證一致性;
2)使用stringify將前端傳遞的對象轉化為字元串 ,data: JSON.stringify(param)。
(2)前端界面報400擴展閱讀:
當用戶試圖通過HTTP或FTP協議訪問一台運行主機上的內容時,Web伺服器返回一個表示該請求的狀態的數字代碼。
該狀態代碼記錄在伺服器日誌中,同時也可能在 Web 瀏覽器或 FTP客戶端顯示。也就是我們打開頁面發生錯誤時瀏覽器顯示的錯誤信息代碼。狀態代碼可以指明具體請求是否已成功,還可以揭示請求失敗的確切原因。
HTTP400系列錯誤列表:
1、401 Unauthorized
當前請求需要用戶驗證。該響應必須包含一個適用於被請求資源的 WWW-Authenticate 信息頭用以詢問用戶信息。客戶端可以重復提交一個包含恰當的 Authorization 頭信息的請求。如果當前請求已經包含了 Authorization 證書,那麼401響應代表著伺服器驗證已經拒絕了那些證書。
如果401響應包含了與前一個響應相同的身份驗證詢問,且瀏覽器已經至少嘗試了一次驗證,那麼瀏覽器應當向用戶展示響應中包含的實體信息,因為這個實體信息中可能包含了相關診斷信息。參見RFC 2617。
2、402 Payment Required
該狀態碼是為了將來可能的需求而預留的。
3、403 Forbidden
伺服器已經理解請求,但是拒絕執行它。與401響應不同的是,身份驗證並不能提供任何幫助,而且這個請求也不應該被重復提交。如果這不是一個 HEAD 請求,而且伺服器希望能夠講清楚為何請求不能被執行,那麼就應該在實體內描述拒絕的原因。當然伺服器也可以返回一個404響應,假如它不希望讓客戶端獲得任何信息。
4、404 Not Found
請求失敗,請求所希望得到的資源未被在伺服器上發現。沒有信息能夠告訴用戶這個狀況到底是暫時的還是永久的。假如伺服器知道情況的話,應當使用410狀態碼來告知舊資源因為某些內部的配置機制問題,已經永久的不可用,而且沒有任何可以跳轉的地址。
404這個狀態碼被廣泛應用於當伺服器不想揭示到底為何請求被拒絕或者沒有其他適合的響應可用的情況下。出現這個錯誤的最有可能的原因是伺服器端沒有這個頁面。
5、405 Method Not Allowed
請求行中指定的請求方法不能被用於請求相應的資源。該響應必須返回一個Allow 頭信息用以表示出當前資源能夠接受的請求方法的列表。鑒於 PUT,DELETE 方法會對伺服器上的資源進行寫操作,因而絕大部分的網頁伺服器都不支持或者在默認配置下不允許上述請求方法,對於此類請求均會返回405錯誤。
③ post請求報400錯誤
發送請求之後報400的錯誤
在查找了解決方法後找到
1、敬哪對照欄位名稱,類型保證一致性亮態碼
2、使用 stringify 將前端傳遞的對象轉化為字元串
學習文閉謹檔: https://www.runoob.com/w3cnote/http-400.html
④ vscode跑前端代碼沒有network
vscode跑前端代返純碼沒有network
1、項目運行後只是代理了localhost但是未代理到畝睜ipv4導致項目運行報400
2,解決方案:
電腦--屬性--環境配置--新建--%windir%/system32/wbem
vscode的環境配置:WBEM簡介_hkbyest的博客漏耐咐-CSDN博客_wbem
3、在vue.config.js里配置
⑤ 前端ajax請求出現400錯誤怎麼解決
ajax 出錯,有兩種可能。 發送數據的時候報錯 (URL 不對,參數不對 ) 接收數據的時候報錯(這個錯誤在你即使請求成功了,但是沒有返回值也會報錯)
⑥ 400錯誤 是前端的問題 還是伺服器
是前端問題,前端問題報錯還有多個如下:
HTTP常見錯誤 400 401 403 404 405 406 407 412 414 500 501 502
HTTP 錯誤 400
400 請求出錯
由於語法格式有誤,伺服器無法理解此請求。不作修改,客戶程序就無法重復此請求。
⑦ 網路請求失敗(400)
HTTP 400 錯誤 - 請求無效 (Bad request)
在ajax請求後台數據時有時會報 HTTP 400 錯誤 - 請求無效 (Bad request);出現這個請求無效報錯說明請求沒有進入到後台服務里;
原因:1)前端提交數據的欄位名稱或者是欄位類型和後台的實體類不一致 或 前端提交的參數跟後台需要的參數個數不一致,導致無法封裝;
2)前端提交的到後台的數據應該是json字元串類型,而前端沒有將對象轉化為字元串類型;
解決方案:
1)對照欄位名稱,類型保證一致性
2)使用stringify將前端傳遞的對象轉化為字元串 data: JSON.stringify(param) 。
⑧ vue中手機QQ瀏覽器post請求報錯400,Required request body is missing,其他瀏覽器正常
建議你把手機和360手機助手連接後把QQ瀏覽器卸載再重裝一下。
⑨ 前端面試06:補充 400 和 401、403 狀態碼
產生原因:
前端提交數據的欄位名稱和欄位類型與後台的實體沒有保持一致
前端提交到後台的數旦知據應核氏該是 json 字元串類型,但是改遲散前端沒有將對象 JSON.stringify 轉化成字元串。
解決方法:
對照欄位的名稱,保持一致性
將 obj 對象通過 JSON.stringify 實現序列化
⑩ http請求400錯誤
4xx:客戶端錯誤
400 Bad Request:客戶端請求有語法錯誤,伺服器無法理解。
一般來說,原因都是提交的欄位類型、數據格式的問題
1)前端提交數據的欄位名稱或者是欄位類型和後台的實體類不一致,導致無法封裝;
2)前端提交的到後台的數據應該是json字元串類型,而前端沒有將對象轉化為字元串類型;
這兩種的解決方案:
1)對照欄位名稱,類型保證一致性
2)使用stringify將前端傳遞的對象轉化為字元串 data: JSON.stringify(param) ;
因為在postman上可以調通,所以不是上述原因,而且因為後台要求,這次的參數全部拼接在url上。然後就發現原因了,這次的請求拼接為 http://url...?key1=value1&key2=key2
http請求參數中含有 & 或者空格,必須URL編碼(GET請求時,參數含有中文,也需要URL編碼哦)
請求 http://url...?+encodeURI(key1=value1&key2=key2) ,對url後面參數拼接部分進行UTF-8編碼,將&去除
這樣就好啦,哈哈哈哈哈。。。
偶然想到另一種可能,就是http請求長度過長的時候可能也會報400錯誤。我試了一下,hbuilder在ios端打包後,長度7000多是可以正常請求的,當超過9000的時候會報400錯誤;在小程序上,報的就是414了。。。