Как мне сделать GET-запрос из скрипта контента расширения firefox? - PullRequest
0 голосов
/ 08 октября 2019

Я создаю расширение для firefox, которое отправляет запрос get на локальный js-сервер, запрос содержит URL-адрес видео на YouTube, а локальный сервер открывает видео в 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);

}

Я ожидаю, что запрос пройдет, когдафункция вызывается, но это не так, мой локальный сервер ничего не получает.

Ответы [ 2 ]

0 голосов
/ 09 октября 2019

Пройдя немного больше чтения, я обнаружил, что вы не должны использовать порты в разрешениях, и что контент-скрипты могут делать запросы только на порт 80. Поэтому после изменения порта мой сервер работает на 80, все работает какожидается.

refrence

Мне кажется, стоит упомянуть, почему я использую полный URL-адрес. Я пытаюсь создать систему, которая позволяет мне «транслировать» видео на другой компьютер в моей сети, сравнимо с тем, как работает Chromecast. Таким образом, только отправка видео по идентификатору YouTube позволила бы мне использовать эту систему только для YouTube, однако при использовании полного URL-адреса каждая веб-страница, на которой установлен проигрыватель html5, становится «castable».

Спасибо за всеответы!

0 голосов
/ 08 октября 2019

Попробуйте включить "http://localhost/*" или "http://127.0.0.1:8080/*" в ваши разрешения. Ссылка здесь.

...