e5da20291e779244f60d377274e32e34_0_wx_fmt=png
e5da20291e779244f60d377274e32e34_0_wx_fmt=png

当前调起H5支付的referer为空导致,一般是因为直接访问页面调起H5支付,请按正常流程进行页面跳转后发起支付,或自行抓包确认referer值是否为空。1

header重定向后取不到referer

  1. 直接请求带有header('Location:$url')的地址(a.php)会在跳转的目标地址(b.php)提示undefined,因为跳转的目标地址不会收到referer这个请求头。
  2. 通过JS代码跳转到a.php(使用location.href或ajax请求),可以得到referer,初步猜测referer是浏览器包装后才发给后端的。
  3. 用ajax请求a.php时,会产生两次请求,因为ajax在收到Location这个响应头后自动再发了一个请求给重定向的地址。
  4. 点击a标签跳转到a.php,同样可以得到referer。

最终结论: 直接访问的地址如果响应了Location这个报头字段,则浏览器马上请求的新地址无法获取到referer。referer通常是由document发出请求才有的,在直接请求一个地址时,如果还没输出HTML就先发了报头,此时document对象还未产生,导致无法构造referer发给服务端。而通过前端代码发出的请求是在浏览器已经构造了document对象之后,因此能够让服务端得到referer字段

由于商家传入的H5交易参数有误,该笔交易暂时无法完成,请联系商家解决

image-20231230095336584
image-20231230095336584

统一下单中 spbill_create_ip 字段必须为客户端IP地址