微信小程序自带的referer (附:微信,头条,支付宝,百度小程序的自带referer)

背景

一个获取列表信息的接口,在我在浏览器可以正常获取数据,但小程序的接口返回失败:/1invalid_request

定位问题

在CGI中有域名白名单校验:
checkhost()函数会校验请求头中的referer字段的域名是否在白名单中。

//白名单
$config['whitehost'] = array(
    'http://www.aa.cn',
    'http://www.bbb.cn',
    'https://www.ccc.cn',
    .....);
//checkhost() 判断
if ($refer && (strpos($refer, $whiteHosts[$i]) !== false)) {
        ...
        return true;
}else{
    die('/1invalid_request');
}

如果校验白名单失败,则返回/1invalid_request

那么,就可能是小程序referer有问题了。
我对比了一下PC 和 小程序调用此接口的referer
PC的请求头:

Referer: https://www.myhost.cn/

小程序的请求头:
Referer: https://servicewechat.com/{appid}/{version}/page-frame.html

咦,微信小程序这里怎么和想象的不一样?

解决方案

搜索一下,你就知道
百度一下,你就知道

在微信小程序中:
网络请求的 referer 是不可以设置的,格式固定为 https://servicewechat.com/{appid}/{version}/page-frame.html,其中 {appid} 为小程序的 appid,{version} 为小程序的版本号,版本号为 0 表示为开发版。
参考:https://blog.csdn.net/wl1769127285/article/details/53690640

原来如此,微信小程序有自带的 referer, 且不可修改

只需要将
https://servicewechat.com
设置到域名白名单中即可:

$config['whitehost'] = array(
     'http://www.aa.cn',
    'http://www.bbb.cn',
    'https://www.ccc.cn',
    'https://servicewechat.com'//微信小程序
    .....
    );

其他平台的referer格式

平台referer备注
微信小程序https://servicewechat.com/{appid}/{version}/page-frame.html
头条抖音https://tmaservice.developer.toutiao.com
百度小程序https://smartapps.cn/{appKey}/{version}/page-frame.html百度小程序请求referer调整
支付宝https://你的appid.hybrid.alipay-eco.com蚂蚁开发文档

参考:

各平台白名单总结
百度小程序请求referer调整
微信小程序——网络请求之关于referer
谈谈网站防盗链
浅谈网站防盗链技术

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值