谷歌翻译API HTTP REFERRER限制导致请求被阻问题求助
解决谷歌翻译API Referer限制下空Referer被拦截的问题
先确认第三方应用是否发送了Referer头
很多时候问题出在应用根本没发送Referer字段,导致谷歌API收到空Referer而拦截。让开发者打开浏览器DevTools的Network面板,找到翻译请求,查看Request Headers里是否存在Referer字段。如果为空,检查应用的请求配置:- 若用
fetch发起请求,确保referrerPolicy设为strict-origin-when-cross-origin或origin-when-cross-origin(不要用no-referrer); - 检查页面是否有
<meta name="referrer" content="no-referrer">标签,有的话改成<meta name="referrer" content="strict-origin-when-cross-origin">,强制浏览器发送Referer。
- 若用
调整谷歌API控制台的Referer规则
之前的规则可能没覆盖实际发送的Referer格式,试试以下配置:- 添加带协议的规则:
https://*.ourdomainname.com/*和http://*.ourdomainname.com/*(谷歌API的Referer限制是前缀匹配,带协议能更精准匹配实际请求的Referer); - 直接添加域名前缀规则:
ourdomainname.com(不带通配符和路径,会匹配所有包含该域名的Referer); - 如果应用的请求来自特定子域名,比如
app.ourdomainname.com,可以直接添加https://app.ourdomainname.com/*,缩小限制范围的同时提升匹配准确性。
- 添加带协议的规则:
排查跨域或安全策略导致的Referer丢失
- 若应用页面是HTTP协议,请求HTTPS的谷歌翻译API,浏览器出于安全策略会隐藏Referer,这种情况建议把应用页面升级到HTTPS;
- 检查是否有浏览器插件或浏览器隐私设置(比如隐私模式)禁用了Referer发送,测试时可以关闭插件或用常规模式验证。
谨慎使用空Referer规则(临时方案)
如果确实无法让第三方应用发送Referer,又要保留其他域名的限制,可以在谷歌API控制台添加空Referer规则(输入空字符串或""),但这会允许所有空Referer的请求,存在被滥用的风险,建议仅作为临时过渡方案,同时监控API调用量和来源,尽快修复应用的Referer发送问题。
内容的提问来源于stack exchange,提问作者dcpartners
相关产品推荐
相关产品推荐

