APP Referer校验失败:百度地图报错

本文探讨了在小程序中遇到的百度地图经纬度获取失败问题,解析了由于使用HTTP而非HTTPS协议导致的问题,并分享了解决方案。

请求百度地图,返回状态是200,data 中codeStatus为220,‘APP Referer校验失败:百度地图报错’

今天在小程序线上一直无法获取到百度地图的经纬度,经过调试发现调用地图的地址未http的协议,而不是https的协议,导致了线上的无法获取到百度地图的经纬度。体验版中去掉了https的一些校验所以能通过╮(╯▽╰)╭

网上找了一些资料大部分人都是 APPID、白名单的一些问题。而我刚好都避开了。

Referer校验失败通常发生在Web应用或API请求中,当服务器配置了基于HTTP Referer头的访问控制策略时,如果请求未携带正确的Referer头,或者其值不在服务器允许的白名单中,则会返回类似“Referer校验失败”的错误。此类问题常见于图片资源访问、API调用、CDN访问控制等场景。 ### 配置服务器允许的Referer列表 在Nginx中,可以通过配置`valid_referers`指令来限制允许访问的来源: ```nginx location ~ \.(gif|jpg|png|swf|flv)$ { valid_referers none blocked www.example.com example.com; if ($invalid_referer) { return 403; } } ``` 上述配置表示仅允许来自`www.example.com`和`example.com`的请求访问图片资源,其他来源将被拒绝访问[^1]。 ### 在CDN中配置Referer白名单 如果你使用的是CDN服务(如阿里云CDN、腾讯云CDN等),通常可以在控制台中设置Referer白名单。例如: 1. 登录CDN控制台。 2. 找到目标域名,进入“访问控制”或“防盗链”设置。 3. 启用Referer校验,并添加允许的域名。 4. 保存配置。 通过这种方式,可以有效防止其他网站盗用你的CDN资源,同时避免合法来源被误拦截。 ### 在应用代码中处理Referer校验 如果你的应用直接处理请求,并需要自行校验Referer,可以在代码中进行判断。例如,在Node.js中可以这样做: ```javascript app.use((req, res, next) => { const allowedReferer = 'https://www.example.com'; const referer = req.headers.referer || req.headers.referrer; if (!referer || !referer.startsWith(allowedReferer)) { return res.status(403).send('Forbidden'); } next(); }); ``` 上述代码检查请求头中的`Referer`字段,只有来自指定域名的请求才被允许继续执行[^1]。 ### 前端请求中添加Referer头 如果你的应用是前端发起请求,并且服务器对Referer有要求,可以在请求中显式设置Referer头。例如,在JavaScript中使用`fetch`时: ```javascript fetch('https://api.example.com/data', { method: 'GET', headers: { 'Referer': 'https://www.example.com' } }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('Error:', error)); ``` 这样可以确保请求携带正确的Referer头,避免因缺失或错误的Referer而导致访问被拒绝。 ### 调试Referer问题 如果仍然遇到Referer校验失败的问题,建议使用浏览器开发者工具(F12)或Postman等工具检查请求头中的`Referer`字段是否正确。此外,查看服务器或CDN的访问日志,确认实际请求中是否携带了预期的Referer信息。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值