#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"
]