Как я могу получить данные JSON из расширения браузера (Chrome) с другого сервера?

#javascript #google-chrome #google-chrome-extension #google-chrome-devtools #chrome-extension-manifest-v3

Вопрос:

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

 Access to XMLHttpRequest at 'https://my.server.domain/currency.txt' from origin 'https://developer.mozilla.org' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.  

Пример кода запроса

 $updateUrl = "hhttps://my.server.domain/currency.txt"; $.get($updateUrl).done(function($updData) {  });  

Единственное место, где я могу запустить подобный сценарий, находится в popup.html, но мне нужно, чтобы обновления запускались автоматически. Я пытался сделать это в фоновом режиме, но в манифесте v3 такой возможности больше нет.

Единственный вариант-периодически открывать update.html страница расширения и выполняйте обновления на ней, но это происходит при открытии новой вкладки, и я хотел бы сделать это в фоновом режиме.

Какие-нибудь советы?

Ответ №1:

В общем, я написал это в background.js и это работает

 fetch("https://my.server.domain/currency.txt") .then((response) =gt; {  return response.json(); }) .then((data) =gt; {  console.log(data); });  

Теперь осталось выяснить, как заставить скрипт периодически обновлять данные, иначе он будет работать только один раз. Но это уже другая история.