Jmeter请求提交表单,报错419无法解析解决方法
最近在用jmeter做接口自动化测试,在一些post请求提交参数的时候,总是报错419,提示响应内容无法解析的情况(如下图)
先说解决方法,再说具体原因
第一步:勾选HTTP请求里的【对POST使用multipart/from-data】
第二步:删除请求头里的Content-Type字段
第三部:重新运行
运行完成,数据成功提交了,接下来说一下具体原因,感兴趣的朋友可以继续看看
在刚开始排查报错原因时,因为服务器没有解析出来我上传的内容,所以直接缩小排查范围,一定是上传的参数有错误,或者上传的类型有错误,或者是上传需要的前置条件有错误。
首先我排除了前两条,因为大部分的请求值和所需要填写的内容,都是从抓包工具上复制粘贴的,错误的可能性太低。
然后我开始检查关于参数的配置项,也就是请求头,并且从后端同事那得知,公司后台上传参数格式为multipart/form-data(下图)
然后我们对比请求头的内容
注意看boundary=---webxxxxxxxx,然后继续查看请求上传格式
所以boundary=---webxxxxxxxx它的作用是分隔符,是multipart/form-data请求格式的分隔符,并且每次分隔符的内容都是变动的
前面讲到jmeter请求给了一个multipart/form-data参数选项,也就是说jmeter可以自动帮你处理生成分隔符,如果我们在请求头带入了分隔符,然后又勾选了jmeter内置的分隔符,那么服务器就傻了~识别不出来了~
所以解决方法就是直接删除请求头信息,勾选jmeter选项就可以了
并且我还用了几种方式,比如不勾选jmeter内置的multipart/form-data,保留请求头内容,结果还是报错,我想是因为分隔符是变动的,直接把抓包信息复制上去是不行的。
如果大家有更好的解决方式,也可以留言一起交流