1. 问题描述

最近公司一个关于婚车的微信端项目进行到支付模块时,死活卡到一个表单请求为空值进行不下去。用安卓微信端进行点击支付的时候,提交表单进行POST请求,接收请求的是(ThinkPHP)Controller中的一个方法,然后客户端出现正确的页面,但是忽然又跳转到了异常的页面,显示参数不能为空。

2. 问题排查

首先想到的应该是进行多次请求了,然后查找前台的页面进行请求的地方,也只有一次请求。那应该就是后端的进行多次响应了,于是对响应的方法对请求的信息随机输出到文件,结果得到了三个文件,查看文件看到第一次有请求的值,接下来的两次都是空值。然后在电脑端模拟微信端进行测试,居然毫无问题,然后在手机端浏览器测试居然也没问题,最后问题定位到了安卓微信的内置浏览器上,网上一搜,MPP,果然是微信的X5内核浏览器导致的。

3. 导致原因

3.1 正确请求

正确请求

3.2 错误请求

错误请求

4. 解决办法

从网上看了好多,他们出现的问题和我的差不多,但是并没有非常好的解决办法,最终采用了最不安全但又实用的解决办法:GET传参,用GET传参值由于值是在URL中,就不会出现空值的现象了,但出现的最大的问题就是不够安全.如有更好的解决办法,请告诉我一下。

最后修改:2019 年 03 月 18 日
如果觉得我的文章对你有用,请随意赞赏