为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 Firefox 扩展的内容脚本发出 GET 请求?

如何从 Firefox 扩展的内容脚本发出 GET 请求?

慕姐4208626 2021-11-12 18:35:31
我正在为 firefox 构建一个扩展,它向本地 js 服务器发送 get 请求,请求包含指向 youtube 视频的 url,本地服务器将在 mpv 中打开视频。一切正常,除了提出请求的部分,我不知道如何去做。我在接收端禁用了 cors。我将 webRequest 添加到清单中。我尝试使用 XMLHttpRequest 并获取。我知道调用了铸造函数我知道我使用的 url 格式正确,因为当我在浏览器中执行手动请求时,它们会按预期工作。清单.json:{  "manifest_version": 2,  "name": "Youtube Caster",  "version": "1.0",  "description": "My own casting plugin",  "icons": {    "32": "icons/youtube-32.png"  },    "permissions": [    "*://www.youtube.com/*",    "activeTab",    "webRequest"    ],  "browser_action": {    "browser_style": true,    "default_icon": "icons/youtube-32.png",        "default_title": "Caster",        "default_popup": "popup/cast_video.html"    }}我的内容脚本:(只显示应该发出请求的函数)function cast() {    const url = "http://127.0.0.1:8080/play?url="    const videoURL = window.location.href;    console.log("casting... ", url+videoURL)    fetch(url+videoURL);}我希望在调用函数时请求能够通过,但事实并非如此,我的本地服务器没有收到任何东西。
查看完整描述

3 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

我找到了这个:

注意:路径模式字符串不应包含端口号。添加端口,如:“http://localhost:1234/ ”会导致匹配模式被忽略。但是,“http://localhost:1234”将与“http://localhost/ ”匹配

https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Match_patterns

当 Firefox 和 Chrome 看到端口号时,它们的行为似乎有点不同。

https://bugzilla.mozilla.org/show_bug.cgi?id=1362809


查看完整回答
反对 回复 2021-11-12
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

阅读更多内容后,我发现您不应该在权限中使用端口,并且内容脚本只能在端口 80 上发出请求。因此,将我的服务器运行的端口更改为 80 后,一切都按预期进行。

我觉得值得一提的是为什么我要使用完整的网址。我正在尝试构建一个系统,允许我将视频“投射”到我网络上的另一台电脑,类似于 chromecast 的工作方式。因此,仅通过 youtube 视频 ID 发送会限制我仅将这个系统用于 youtube,但是通过使用完整的 url,每个带有 html5 播放器的网页都变为“可播放”。


查看完整回答
反对 回复 2021-11-12
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

尝试包含"http://localhost/*"或包含"http://127.0.0.1:8080/*"您的权限。参考这里。


查看完整回答
反对 回复 2021-11-12
  • 3 回答
  • 0 关注
  • 254 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信