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

我正在为 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);


}

我希望在调用函数时请求能够通过,但事实并非如此,我的本地服务器没有收到任何东西。


慕姐4208626
浏览 255回答 3
3回答

暮色呼如

我找到了这个:注意:路径模式字符串不应包含端口号。添加端口,如:“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

喵喵时光机

阅读更多内容后,我发现您不应该在权限中使用端口,并且内容脚本只能在端口 80 上发出请求。因此,将我的服务器运行的端口更改为 80 后,一切都按预期进行。我觉得值得一提的是为什么我要使用完整的网址。我正在尝试构建一个系统,允许我将视频“投射”到我网络上的另一台电脑,类似于 chromecast 的工作方式。因此,仅通过 youtube 视频 ID 发送会限制我仅将这个系统用于 youtube,但是通过使用完整的 url,每个带有 html5 播放器的网页都变为“可播放”。

斯蒂芬大帝

尝试包含"http://localhost/*"或包含"http://127.0.0.1:8080/*"您的权限。参考这里。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript