Расширение браузера Microsoft Edge ajax для исходного заголовка запроса CORS не отправлено

#javascript #cors #microsoft-edge #browser-extension

#javascript #cors #microsoft-edge #расширение браузера

Вопрос:

Я создаю расширение браузера для Firefox, Chrome и Edge. Я смог заставить свое расширение работать в Firefox и Chrome, но застрял с проблемой в Edge.

Когда мое расширение загружается, оно вызывает ajax GET и извлекает некоторые данные инициализации. Firefox отправляет Origin заголовок, когда я выполняю вызов ajax, что помогает мне настроить Access-Control-Allow-Origin соответствующим образом.

В Edge нет Origin заголовка, отправляющегося с запросом, и моя проверка завершается неудачей, в результате чего заголовок ответа не устанавливается, а вызов завершается с ошибкой as.

РАЗДЕЛ 7120: [CORS] Источник ‘ms-browser-extension://Manager_F14DC7EC297D4EDABB8E56840AE117D6’ не нашел ‘ms-browser-extension://Manager_F14DC7EC297D4EDABB8E56840AE117D6’ в заголовке ответа Access-Control-Allow-Origin для ресурса с разными источниками в ‘https://example.com/api/i18n?_=1552907931096‘.

Я что-то здесь упускаю, manifest.json должен содержать некоторую инструкцию, специфичную для Edge. Версия Microsoft Edge 42.17134.1.0

Описанный выше сценарий происходит во время разработки, я получаю доступ к расширению, загруженному из файловой системы.

Комментарии:

1. Вы когда-нибудь пытались добавить «Acess-Control-Allow-Origin» вручную? Можете ли вы опубликовать связанный код о методе Ajax? Кроме того, вы могли бы попробовать использовать метод Post для получения данных.

2. @ZhiLv-MSFT Я не контролирую сервер, он разработан другой командой, я не могу изменить что-либо, связанное с заголовком, или изменить вызов на POST, любое изменение пройдет через процесс утверждения командой. Вызов Ajax — это простой jQuery API, который разработан той же командой. Моя задача — максимально использовать их готовый код для разработки расширения.

3. Согласно сообщению об ошибке, источник странный, из этой статьи мы видим, что источником является URL вашего веб-сайта. Я предлагаю вам проверить заголовок запроса в Chrome и проверить, являются ли они URL-адресом веб-сайта. Кроме того, я предлагаю вам также попробовать получить прямой доступ к ресурсу с веб-сайта в браузере Edge, а не через расширение Edge (используя этот метод, чтобы проверить, связана ли проблема с расширением Edge).

4. Удалось ли вам решить эту проблему? Я сам с этим сталкиваюсь…

Ответ №1:

В вашем manifest.json,

поместите все соответствующие URL-адреса в раздел «разрешения».

 "permissions" : [
  "https://my-initialization-data.com/data.whatever"
]