① 前台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了。。。