【问题一】POST请求发生服务器500错误

问题描述
一次调用POST请求过程中,接口报500错误,接口错误属于服务器内部错误,原以为是后台的接口有问题,立马将500问题向后台反馈,然而后台却告知接口测试正常。看来问题的根源在前端,我仔细看了看代码之后发行,原来是自己在发起POST请求时忘记提交参数。
✨解决办法
完善请求参数

【问题二】POST请求发生405错误

问题描述
发起POST请求,控制台反馈405 Method Not Allowed405错误提示如图:
✨解决办法
错误原因比较直接,是用错了method方法
将method由GET改成POST即可
总结
不是所有问题都是代码或者接口导致,有时候从自身找问题才是最好的解决办法

【问题三】前端POST请求成功,后台却获取不到数据

问题描述
近期基于UNI-APP提供的uni.request()方法封装了一个简易的拦截器,在之前的项目中不管是POST还是GET都能正常使用,但最近的一个项目中却发生了GET请求正常,POST请求后台无法获取到数据的问题由于之前的成功经历,让我直接忽略了请求配置的问题,而是从其它方面思考问题发生的原因。比如:检查参数及格式是否有问题(毕竟吃过一次亏)将参数使用JSON.stringfy进行格式化将method设置为get (显然不对,后台接口明显要求是POST)
经过一番尝试之后最终定位问题是Content-Type设置不正确所致。
✨解决办法
将请求头的Content-Type属性设置为'application/x-www-form-urlencoded'
uni.request()默认Content-Type 为"application/json",设置前后的Content-Type分别见下图:
总结
不要过于相信过去成功的经验!!!
关于POST与Content-Type更加详细的说明,可参阅

【问题四】POST请求后台提示参数格式不正确

问题描述
问题四发生在Vue+axios项目中,项目中使用get请求一切正常,使用POST请求却一直提示参数格式不正确,一开始还以为是和【问题三】一样是由于Content-Type配置不正确导致,结果将Content-Type换了个便也没有解决问题。最终依靠万能度娘解决
✨解决办法
使用qs格式化POST请求参数>1. npm install qs--save//安装qs>2.importQSfrom'qs'//引用qs>3.QS.stringfy(data)//事情stringfy方法格式化参数详细说明可参阅axios与qs
总结
有问题多百度,沉舟侧畔千帆过,你遇到的坑可能已经被人填了无数遍了,百度、CSDN都能搜索到非常多的资源!

【问题5】POST请求后台提示参数格式不正确

问题描述
前端调用后端POST接口,向后台提交一个字符串数据,结果接口一直返回参数格式不正确,打开调试才知道参数未能被后端正确解析。然而后端本地调试一切正常,看来锅在前端无疑了。
问题定位
后端接受JSON格式参数,然而 抓取axios POST请求发现Content-Type为application/x-www-form-urlencoded。此时将Content-Type设置为application/json
再次发起请求,发现问题依旧。检查前后端代码发现传参POST传参时需要对参数调用JSON.stringfy()进行格式化。
问题解决
首先设置Content-Type:headers["Content-Type"]="application/json"JSON.stringfy()格式化参数data:JSON.stringfy( param )

写在后面

上面描述的4个有关POST请求的问题都是近期在前后端项目对接中真实遇到的,趁此机会对其作了一个总结,文中虽然没有深入去讲解其错误原因和解决原理,但都给出了相应的文章链接。
欢迎大家关注微信公众号 :

前端牧码人

学前端,做快乐牧码人
一、错误示例 起因:用eclipse+Tomcat做练习时,使用eclipse自带浏览器访问web项目出现错误,但是用谷歌浏览器...二、解决办法 对中文进行url编码,对中文进行url编码后的链接如下: http://localhost/test/TomcatT...

一、错误示例

起因:用eclipse+Tomcat做练习时,使用eclipse自带浏览器访问web项目出现错误,但是用谷歌浏览器正常访问。
图1,使用eclipse自带浏览器:
图2,使用谷歌浏览器:
原因是因为火狐和谷歌浏览器会自动对url进行转码,但IE不会。

二、解决办法

对中文进行url编码,对中文进行url编码后的链接如下:
http://localhost/test/TomcatTest/HelloForm?name=中文&url=www.runoob.com
再次使用eclipse自带浏览器访问:
发现访问正常了。
下面就是我总结出现这种“redirect_uri参数错误”的七种可能情况,以及解决方式。 1、可能原因①:授权目录 支付授权目录是网站发起请求的页面所在目录,并且必须是能通过url地址访问的(与真实物理目录...
我们在进行微信支付开发的时候会遇到出现“redirect_uri参数错误”这种情况,怎么办呢?下面就是我总结出现这种“redirect_uri参数错误”的七种可能情况,以及解决方式。
1、可能原因①:授权目录
支付授权目录是网站发起请求的页面所在目录,并且必须是能通过url地址访问的(与真实物理目录路径无关)。注意这个目录在注册填写时,需要精确到最细一级的且使用名称后直接加文件名,不可再增加 or 删减目录。
2、可能原因②:网页授权
当开发者使用微支付的“JS API”支付时,这种支付需要网页授权,先获取code,再拿code去获取openid和prepay_id。这个网页授权需要登录微信公众平台,点击左 侧菜单“开发者中心”,在右侧“接口权限列表”中找到“网页账号”,点击最右侧的修改,把测试的域名写进去,注意不要加http。
3、可能原因③:网页获取用户基本信息(位置:微信公众号-开发者中心)
网页获取用户基本信息,这个可能性最大,网页获取用户基本信息中的域名没有填写或填写错误,我遇到的了是这个问题,要确保相应的参数设置没有错误情况下,就检查这一项,很多时候就可以解决了。
具体操作:微信公众号-开发者中心-网页授权获取用户基本信息-修改-填写域名(不带www及/)。
4、可能原因④:链接地址不存在
在微信端点击相应的按钮,如果是出现链接地址不存在,或者配置错误也会出现这个问题,因此在配置内部链接网址的、目录的时候,一定要准确,不然就会出现以上图问题,这个比较好解决,检查,重新设置链接,这个有时要求有一定的代码基础。
5、可能原因⑤:JS接口安全域名没有填写
点击公众号设置-功能设置-点击JS接口安全域名后面的设置-第一行填写“域名”-保存。
6、可能原因⑥:代码错误
这里特别说明下,一些程序员在做开发程序的时候,会出现这样的问题,请确保按照开发文档来开发哦,检查好代码,不要出错。我这里也碰到某些程序员在开发过程中用的是微信开放平台里的文档,但一定要确实每个网站与平台的对接。
7、可能原因⑦:路径错误
微信公众号后台的功能设置及开者设置方面,若不确定自己填写的URL,请向开发者或者服务商确认再填写(如:支付路径,回调路径等)。
出现题目中的redirect_uri参数错误问题应该不外乎就是这个几个原因,和以及相对的解决方式。

tomcat请求参数问题解决: Invalid character found in the request target. The valid characters are ...

万次阅读
解决办法四种错误还原: 今天升级tomcat7.0.84遇到一个问题:url请求中包含{}的都报错: 二月 06, 2018 5:25:39 下午 org.apache.coyote.http11.AbstractHttp11Processor process 信息: Error parsing ...

错误还原:

今天升级tomcat7.0.84遇到一个问题:url请求中包含{}的都报错:
二月06,20185:25:39 下午 org.apache.coyote.http11.AbstractHttp11Processor process 信息: Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. java.lang.IllegalArgumentException: Invalid character foundin the request target. The valid characters are definedin RFC7230and RFC3986 at org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:192) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1028) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)
前台的请求及报错如下:
Failed to load resource: the server responded with a status of400 (Bad Request) http://localhost:8080/XXX/formshow/show.jsp?formId=1222&processFormType=CREATE&formUsage=INPUT&initData={%22flowId%22:%22180206172500073%22,%22flowTypeId%22:%228%22,%22flowType%22:%22WFM%22,%22processNameEn%22:%22com.inspur.plugins.ge.process.GenerateElectricity%22,%22processNameZh%22:%22GE%22,%22processPluginName%22:%22ge%22,%22formType%22:%22JSP%22,%22version%22:%221.1.1%22,%22jspformService%22:%22generateElectricityCreateJspFormService%22}

问题分析:

错误代码 400请求参数有误:
升级tomcat之后就出现了这个问题,Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986,也就是说我们的请求中用了无效的字符。查看RFC规范知,url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~四个特殊字符以及保留字符( ! * ’ ( ) ; : @ & = + $ , / ? # [ ] ) (26*2+10+4+18=84)这84个字符.而我们的请求中出现了{}大括号,所以tomcat报错.

解决办法(四种):

替换url请求。不用{}对请求编码解码。UrlDecode、UrlEncode配置Tomcat对字符的支持(见下文)
更换Tomcat版本(注,Tomcat从7.0.73, 8.0.39, 8.5.7 版本后添加了对Url的限制。)
配置tomcat支持|{}等字符的方法是:在catalina.properties中添加tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}但是只支持7.0.76, 8.0.42, 8.5.12 之后的版本(这些版本之后支持设置上述属性)
注,Tomcat从7.0.73, 8.0.39, 8.5.7 版本后添加了对Url的限制。
参考资料:
https://stackoverflow.com/questions/41053653/tomcat-8-is-not-able-to-handle-get-request-with-in-query-parameters
https://stackoverflow.com/questions/41053653/tomcat-8-is-not-able-to-handle-get-request-with-in-query-parameters/44005213#44005213
使用Ajax发送请求,而请求参数是一个数组,请求了多次都报400的错误,最后终于找到了解决办法! Ajax请求 var sealList=['1','2','3']; $.ajax({ type: "post", url: "${viayieContextPath}/...
但是测试的时候忽然发现当POST提交数据量多大时,会导致后端报400错误。最开始以为瓶颈存在于tomcat,因为tomcat默认能接受的POST请求大小为2M,所以手动修改tomcat server.xml 文件,将接受POST大小修改为不限制。 ...
但是测试的时候忽然发现当POST提交数据量多大时,会导致后端报400错误。最开始以为瓶颈存在于tomcat,因为tomcat默认能接受的POST请求大小为2M,所以手动修改tomcat server.xml 文件,将接受POST大小修改为不限制。 ...
今日在jmeter测试接口,偶遇put请求上传参数,运行后请求参数为空的现象 笔者尝试了很多错误方法后,总结2种典型失败案例,供大家参考避免。 所幸最后发现了正确道路。 失败案例1: 查看结果树,发现参数...
目前使用的是Retrofit 2.0.2测试版本 因为GEI请求中出现 {} ’错误符号(具体也没看是哪个符号错误)出现not valid as a java.net.URI导致无法访问,解决办法 CallgetUsersNamedTom(@Query(value ="query...
在正式跨域的请求前,浏览器会根据需要,发起一个“PreFlight”(也就是Option请求),用来让服务端返回允许的方法(如get、post),被跨域访问的Origin(来源,或者域),还有是否需要Credentials(认证信息) ...
报错ajax代码: 后台代码: 正确得ajax代码(需要将参数转为json类型):
首先我先说明一下request payload请求时怎么发生的 我们如果从一个from中去提交post请求时,数据...但是最近前端更换ajax请求代码了导致后端全部参数接收不到,我仔细看请求来的参数发现,所有的参数都放在了reques...
使用java,但不使用HttpClient等第三方jar包的情况下发送http请求,有时直接在域名后带参数发送请求时会发生400错误,大家可以测试下如下代码 URL url = new URL("http://www.codeif.com?a=3"); ...
因为传个我的参数不定,所以需要通过map来接收参数(表单提交请求,多个参数) 利用如下程序实现但是发现map里并没有获取到传来的key-value值,而且因为页面是表单提交数据,会报415错误,如果去掉@RequestBody就不...
iframe get请求传递中午参数 乱码解决方案
uni.request请求问题(解决请求接口参数跟在地址栏后面成功放在data里面请求不成功的问题) 在请求接口的时候,发现network里面显示如图: 这时查看uni.request请求,首先看请求方法是不是post,然后再看是否加了...
用selenium + 模拟登陆知乎时报错10001:请求参数异常,请升级客户端 1. 2.分析原因 具体原因是用了自动化测试工具,通过js代码还是能识别出来的,例如你在用了自动化测试工具的控制台输入 window.navigator....
Springboot get请求是参数过长抛出异常:Request header is too large 的问题错误描述 java.lang.IllegalArgumentException: Request header is too large解决方案请求头超过了tomcat的限值。本来post请求...
现在开发的项目是基于SpringBoot的maven项目,拦截器的使用很多时候是必不可少的,当有需要需要...获取到body中的信息后,你会发现你在controller中使用了@RequestBody注解获取参数报如下错误 I/O error whi...
使用qs库来格式化数据 npm install qs --save ...// post请求是格式化数据 import qs from 'qs'; Vue.prototype.$qs = qs; 进行post请求 this.$axios .post( "/app/user/login.do",...
微信web开发者工具请求授权页面 报错 redirect_uri参数错误 原因:redirect_uri 需要在【体验接口权限表】 的网页账号里 网页授权获取用户基本信息 OAuth2.0网页授权 授权回调页面域名: 127.0.0.1:8080 本地...
爬虫request请求误带参数导致错误:这会儿闲下来了顺便把我前几天遇到的一个经典问题跟大家共享一下,写的不好的地方请大家多多指点,欢迎各位提宝贵的意见,邮箱:shangzhen2014@outlook.com。持续更新爬虫遇到的...
httpClient postMethod 传递参数 防止中文乱码
使用ajax向后端发送POST请求成功,但是改用vue-resource发送POST请求一直出现400 Bad Request错误,代码及错误如下: 后端代码 AJAX正常请求 AJAX发送POST请求 http请求详情 成功 ...
#解决微信Scope参数错误或没有 Scope 权限 使用微信服务号做用户登陆的时候出现Scope参数错误或没有 Scope 权限错误: 出发点是想要做一个用户可以通过扫描二维码直接授权登陆网站应用,通过微信服务号的wxappid...
在浏览器测试的时候,谷歌完全没有问题,但是在safari上出现请求参数全部为null,导致bug出现。 一直不知道问题在哪里,在大神指导后发现, safari不识别-,因为有一行代码是let q = year + '-' + month;...
问题描述:当使用.NET编写Winform程序,构建Http Post请求,并传递若干参数给远程服务器时,如果参数中包含加号'+'等符号时,http请求发送后,服务器收到并解析时,加号会被解码为空格。举例说明:若参数中含有:...
一开始使用原生axios来进行网络请求调用,参数格式错误,后台报了500错误,错误参数如下:解决步骤: 封装一个request.js import axios from 'axios' // 创建axios实例 const service = axios.create({ baseURL...
今天做一个项目时,js地址栏传参数出现了这个错误 错误分析 传输的参数中含有- _ . ! ~ * ’ ( )% 等非法字符解决办法:encodeURI函数 //含有非法字符的值 var userNo2 = $('#userNo1').val(); //...