我正在为 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
喵喵时光机
TA贡献1846条经验 获得超7个赞
阅读更多内容后,我发现您不应该在权限中使用端口,并且内容脚本只能在端口 80 上发出请求。因此,将我的服务器运行的端口更改为 80 后,一切都按预期进行。
我觉得值得一提的是为什么我要使用完整的网址。我正在尝试构建一个系统,允许我将视频“投射”到我网络上的另一台电脑,类似于 chromecast 的工作方式。因此,仅通过 youtube 视频 ID 发送会限制我仅将这个系统用于 youtube,但是通过使用完整的 url,每个带有 html5 播放器的网页都变为“可播放”。
添加回答
举报
0/150
提交
取消