小程序真机调试后端接口拿不到referer

在微信小程序中: 网络请求的 referer 是不可以设置的,格式固定为:
https://servicewechat.com/{appid}/{version}/page-frame.html,其中 {appid}
是你当前小程序的 appid{version} 为小程序的版本号,版本号为 0 表示为开发版,版本号为 devtools 表示从开发工具里发出的请求。

即:微信小程序有自带的 Referer, 且不可修改

开发工具上,接口请求的Request Headers那块有Referer,后端也收到了Referer

真机测试时,真机调试的工具面板里有Referer,但是后端还是没接收到,接口报HTTP_REFERER为空

原因是:
小程序开发者工具和手机测试时,不校验安全域名配置无法同步。
即在开发者工具中(真机调试的工具面板里也是)虽然设置了不校验,但是真机调试时手机上仍然校验了,导致真机中HTTP_REFERER没有值(域名切换为正式的安全域名是没问题的)


解决办法:接口请求改成https协议的域名即可


我自己的是因为本地https证书死活安装不成功,443端口玩不了,只能用http80端口
所以本地代码的接口地址写的是http协议的域名,微信开发工具上也勾选了

不校验合法域名、https证书那项
在微信开发工具上溜的一批,一到真机调试就不行了,真机调试面板接口请求的有Referer,但是后端没接收到就很尴尬,一开始以为是nginx设置有问题,后来发现跟它没关系,接口改成https协议的域名就OK了,mmp,记一下。

.

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要设置接口只允许小程序访问,你可以通过以下步骤来实现: 1. 获取小程序的唯一标识符(AppID):在小程序开发平台中注册并创建一个小程序,然后获取到该小程序的 AppID。 2. 在接口访问时,检查请求的来源是否为小程序。可以通过获取请求头中的 referer 字段来判断请求的来源。 3. 在 PHP 中,你可以通过 `$_SERVER['HTTP_REFERER']` 来获取 referer 字段。接下来,你需要解析 referer 字段,提取出小程序的域名或唯一标识符。 4. 将提取出的小程序域名或唯一标识符与预先设置好的 AppID 进行比较,确保它们匹配。 5. 如果匹配成功,则表示请求来自小程序,允许访问接口。否则,拒绝访问或返回错误信息。 以下是一个简单的示例代码: ```php $allowedAppID = 'your_app_id'; // 设置允许访问的小程序的 AppID $referer = $_SERVER['HTTP_REFERER']; // 获取 referer 字段 $refererParts = parse_url($referer); // 解析 referer 字段 if (isset($refererParts['host']) && $refererParts['host'] === 'your_miniprogram_domain') { // 提取出小程序的域名进行匹配 $miniprogramAppID = 'your_miniprogram_app_id'; // 提取出的小程序的唯一标识符 if ($miniprogramAppID === $allowedAppID) { // 允许访问接口 // 处理接口逻辑 } else { // 非法访问,返回错误信息 echo 'Access denied.'; } } else { // 非小程序访问,返回错误信息 echo 'Access denied.'; } ``` 请注意,这只是一个简单的示例,你可能需要根据自己的业务需求进行相应的修改和优化。同时,该方法依赖于客户端发送正确的 referer 字段,因此并不能完全保证接口的安全性。对于关键接口,你可能需要考虑其他安全措施,如使用 API 密钥或签名等方式进行验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值