当前位置: 首页 > 知识库问答 >
问题:

chrome-extension - Chrome扩展如何添加自定义Referer头信息以通过服务器验证?

贺季同
2024-09-11

chrome插件中的请求可以加referer吗?

现在的referer为空,过不了ng的拦截,有什么办法可以指定吗?

共有1个答案

步博艺
2024-09-11

在Chrome扩展中,直接修改HTTP请求的Referer头部信息通常不是直接支持的,因为Chrome出于安全和隐私的考虑,限制了扩展对浏览器发送的HTTP请求头的直接修改能力。然而,你可以通过几种间接的方式来实现这一需求:

1. 使用Web Request API

Chrome扩展的webRequest API(注意:这个API在manifest v3中已被大幅限制,可能需要使用declarativeNetRequest API作为替代,但后者不支持直接修改请求头)允许你拦截、检查并(在manifest v2中)修改网络请求。然而,对于Referer头部,直接修改可能不被允许。

2. 修改服务器端逻辑

如果可能的话,修改服务器端的逻辑以接受不同的验证方式,而不是仅仅依赖于Referer头部。例如,你可以使用令牌(Token)、Cookie或其他HTTP头部来验证请求。

3. 使用代理服务器

在扩展中,你可以将所有请求发送到一个你控制的代理服务器。这个代理服务器可以修改请求,包括添加或修改Referer头部,然后再将请求转发到目标服务器。这种方式相对复杂,需要额外的服务器资源,并且可能引入额外的延迟和性能问题。

4. 使用XHR或Fetch API

如果你的扩展是在与特定网站交互,并且这些交互可以通过XHR(XMLHttpRequest)或Fetch API完成,那么你可以在这些API调用中直接设置Referer头部(尽管这通常用于控制发送到第三方服务的Referer,而不是修改发送给原始请求目标的Referer)。但请注意,这不适用于通过浏览器直接导航的页面请求。

5. 使用declarativeNetRequest API(如果适用)

如果你的扩展遵循manifest v3,并且你只是想根据规则阻止或重定向请求,而不是修改请求头,那么declarativeNetRequest API可能是一个选择。然而,这个API不支持直接修改请求头。

结论

由于Chrome扩展的限制,直接修改Referer头部以通过服务器验证可能不是直接可行的。你需要考虑上述替代方案,或者与服务器端的开发者合作,寻找一个不需要修改Referer头部的验证方法。

如果你确实需要修改Referer头部,并且上述方法都不可行,那么可能需要重新评估你的应用架构或技术选型。

 类似资料:
  • 更新问题: 在这一点上,如果有人能给我任何提示,我可以添加任何类型的扩展在运行时在selenium中,我的目标是能够运行脚本,并让chrome安装扩展和活动,因为当你运行chromedriver时,chrome就像香草一样(没有安装或活动的扩展)我试过以下答案,但没有运气,我试过查找视频,查看文档,但我总是失败,如果有人有任何见解,我将非常感谢!!! 当我使用selenium时,我试图解除阻止or

  • Tweetmeme Chrome 扩展其实就是一个精简版的 TweetMeme 按钮,其作用就是让你“随时随地”都可以向你的关注者分享你正在浏览的网页(“随时随地”加引号是因为在天朝该服务不可用),简单点说就是一个 retweet 按钮。通过 Tweetmeme Chrome 扩展分享出的网址会采用 retwt.me 短网址服务进行缩短,对于身在墙外或者随时都在翻墙状态的用户来说非常实用。 安装

  • chrome-extension 是 Octo-Linker Chrome 扩展。 这款谷歌 Chrome 扩展允许您轻松地浏览 GitHub.com 上的文件和包。它非常支持JavaScript ,如package.json bower.json ES2015 import 和 CommonJS 声明,它也支持 PHP 的 composer.json 。其他语言不久也将被添加进这个扩展。 预览

  • 问题内容: 我用 在我的LRG中打开一个新标签。我要在此URL上附加扩展名的版本号,该版本号在文件中指定: 创建新标签时,如何访问javascript中的版本号? 问题答案: 您可以使用以下命令获取自己的清单和版本: 获得版本号后,就可以执行所需的制表符工作。

  • 我有一个扩展类的类,它看起来像: 问题是,我可以向添加自定义吗?我浏览了和中可用的所有方法,但没有找到任何方法。但是在模式下,我发现在中有的列表。如何在此添加自定义?

  • 本文向大家介绍google-chrome-extension 从扩展代码获取清单,包括了google-chrome-extension 从扩展代码获取清单的使用技巧和注意事项,需要的朋友参考一下 示例 chrome.runtime.getManifest() 以已解析对象的形式返回扩展的清单。 此方法适用于内容脚本和所有扩展页面,不需要权限, 例如,获取扩展的版本字符串:            

  • 在运行selenium时,我需要从web商店加载一个chrome扩展。在我的研究中,我只发现了如何从本地机器加载扩展。 selenium是否可以从Web存储加载扩展?