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

问题描述 投票:0回答:2

我正在构建firefox的扩展程序,该扩展程序将get请求发送到本地js服务器,该请求包含youtube视频的url,本地服务器将在mpv中打开视频。一切正常,除了发出请求的那一部分,我不知道该怎么做。

  • 我在接收端禁用了cors。
  • 我在清单中添加了webRequest。
  • 我尝试使用XMLHttpRequest和访存。
  • 我知道转换函数称为
  • 我知道url的即时消息使用的格式正确,因为当我在浏览器中进行手动请求时,它们可以正常工作。

manifest.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);

}

我希望在调用函数时请求能够通过,但是不会,我的本地服务器什么也没收到。

javascript firefox-webextensions
2个回答
0
投票

尝试在您的权限中包括"http://localhost/*""http://127.0.0.1:8080/*"。参考here.


0
投票

经过更多阅读后,我发现您不应在权限中使用端口,并且内容脚本只能在端口80上发出请求。因此,在更改端口后,我的服务器可以运行到80,一切正常。

refrence

我觉得值得一提,为什么我要使用完整的网址。我正在尝试构建一个系统,使我可以将视频“广播”到网络上的另一台PC,这与chromecast的工作方式相当。因此,仅通过youtube视频ID发送将使我只能将此系统用于youtube,但是通过使用完整网址,每个上面带有html5播放器的网页都可以“投射”。

谢谢您的答复!

© www.soinside.com 2019 - 2024. All rights reserved.