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

2023-10-28

背景

一个获取列表信息的接口,在我在浏览器可以正常获取数据,但小程序的接口返回失败:/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
谈谈网站防盗链
浅谈网站防盗链技术

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • call、apply、bind 方法详解

    一 call apply bind 的共同点 改变函数的 this 指向 第一个参数都是 this 要指向的对象 二 call apply bind 的区别 call apply 都是立即执行 bind 不会立即执行 因为 bind 的返回
  • vue实现甘特图

    1 引入依赖 npm install dhtmlx gantt 6 3 7 2 组件代码
  • python: 运行import tensorflow as tf 出错讯息的解决,CUDA版本查看方法

    Tensorflow 由 Google Brain 开发和维护 广泛应用于各类机器学习machine learning 最近想试用一下 在pycharm上用Python 结果一开始就出问题了 第一句 import tensorflow as
  • 剑指 Offer 52. 两个链表的第一个公共节点(java+python)

    输入两个链表 找出它们的第一个公共节点 如下面的两个链表 在节点 c1 开始相交 示例 1 输入 intersectVal 8 listA 4 1 8 4 5 listB 5 0 1 8 4 5 skipA 2 skipB 3 输出 Ref
  • 时间复杂度分析

    目录 前言 最好 最坏情况复杂度 平均情况时间复杂度 均摊事件复杂度 总结 前言 本文作文学习极客时间课程 数据机构与算法之美 课程的一些笔记与感悟 有兴趣的朋友希望大家关注课程 非常好的课程 不要惧怕数据结构与算法 当你学完整篇专栏 会对
  • 01背包--数组能否分成两个和相同的数组

    1 2 6 3 可以分成 1 2 3 和 6 思路 此题可以用0 1背包问题来解决 分成的两个数组之和 一定为整个数组之和的一半 所以将背包容量设为初始数组之和的一半即可 最后在判断背包所装的容量是不是整个数组之和的一半 关于01背包问题的
  • python 中字典对象按照 value 排序

    dit 1 a 1 b 2 c 2 d 直接使用sorted方法 只能根据key进行排序 sorted dit Out 6 2 1 1 2 如果需要根据value排序 可以 sorted dit items key lambda x x 1
  • 【计算机网络】3、IO 多路复用:select、poll、epoll、reactor

    文章目录 一 select 1 1 用法 1 1 实战 二 poll 2 1 用法 2 2 实战 三 阻塞 非阻塞 3 1 非阻塞 IO 3 1 1 read 3 1 2 write 3 1 3 accept 3 1 4 connect 3
  • 关于Lattic Diamond软件安装不成功问题(license问题)

    今天搞了一上午的软件 都快放弃了 最后发现竟然是环境变量的问题 顿时感觉自己太费了 这么简单都没发现 正常按照教程安装完显示的结果应该是这样的 这时候报错是因为还没有安装license 这个教程里也有 一步步来就行 但是要吐槽的一点就是这个
  • C语言初学者必学必会的C语言必背100代码

    对于C语言这门计算机语言 算是老生常谈了 现在就由我来给大家分享几个关于C语言的几个代码吧 如果有错的地方还望见谅 1 入门级别hello world include
  • 【ES6】let、const、var详解

    let let用于声明变量 特点 1 let不能重复声明变量 2 let声明的变量不会变量提升 3 let声明的变量不属于顶层对象 4 let声明的变量具有块级作用域 let生成了对应的块状作用域 找到i值 let arr for let
  • 解决“至少有一个JAR被扫描用于TLD但尚未包含TLD”的问题

    一 问题描述 26 Aug 2020 18 52 00 419 信息 RMI TCP Connection 3 127 0 0 1 org apache jasper servlet TldScanner scanJars 至少有一个JAR
  • 微服务的优点

    在这里插入图片描述 1 简而言之 微服务就是开发一组小型服务的方式来开发一个独立的应用系统 每个小型服务都运行在自己的进程中 并采用HTTP资源API轻量级的机制来互相通信 这些服务围绕业务功能进行构建 并能通过全自动的部署机制来进行独立部
  • 虚拟机隔离和容器隔离机制及区别

    1 虚拟机隔离机制 通过虚拟化技术虚拟出资源完全独立的的主机 支持虚拟化的层是hypervisor hypervisor是一种虚拟化服务器的软件 2 Docker容器的隔离机制 Docker利用Namespace实现系统环境隔离 采用Cgr
  • 十进制小数转换成二进制的原理理解

    十进制小数转换成二进制的原理理解 在学习浮点数据类型的时候 涉及到了10进制的小数如何转成2进制数的问题 此文章不讨论精度问题 仅涉及转换原理 乘2取整 学习到的方法是 乘2取整 但是一直不知道具体原理是什么 现在从数学上说明一下原理 乘2
  • 你真的了解Python吗?这篇文章可以让你了解90%

    人们为什么使用Python 之所以选择Python的主要因素有以下几个方面 软件质量 在很大程度上 Python更注重可读性 一致性和软件质量 从而与脚本语言世界中的其他工具区别开发 此外 Python支持软件开发的高级重用机制 例如面向对
  • phpstorm 实现SFTP开发,线上线下同步(实时更新代码)

    phpstrom是一个功能非常强大的IDE 甚至在修改SFTP项目时 不需要使用FTP软件将项目download到本地 修改后再提交到服务器覆盖的传统方式 就能做到远程动态连接和修改 非常方便十分适合开发微信项目 1 打开工具栏 Tools
  • 荣耀8 android8.0 2018,荣耀手机EMUI8.0+ Android8.0最新适配计划

    官方活动 荣耀手机EMUI8 0 Android8 0最新适配计划 3941603381 电梯直达 荣小耀同学 天下无双 发表于 2018 3 20 10 06 16 来自 浏览器 最新回复 2020 6 6 19 29 29 亲爱的花粉
  • 离线安装vscode server以及免密登录

    背景 代码服务器通常是无网状态 并且普通用户的权限很低 无法在服务器中安装vscode软件 而我们又想要用vscode编辑器 此时应该怎么办 首先 我们需要在本地安装vscode 其次 当代码量不大 我们可以考虑用samba的方式 在电脑中
  • 微信小程序自带的referer (附:微信,头条,支付宝,百度小程序的自带referer)

    背景 一个获取列表信息的接口 在我在浏览器可以正常获取数据 但小程序的接口返回失败 1invalid request 定位问题 在CGI中有域名白名单校验 checkhost 函数会校验请求头中的referer字段的域名是否在白名单中 白名