#asp.net-core #cors #firefox-addon #cross-domain #firefox-addon-webextensions
#asp.net-core #cors #firefox-дополнение #междоменный #firefox-addon-webextensions
Вопрос:
У меня есть расширение, которое я разрабатываю для Chrome, а также загружаю в магазин дополнений Firefox. Недавно я добавил функцию, при которой расширение отправляет междоменный запрос наhttps://tf2metrics.azurewebsites .net для загрузки некоторых данных json.
Пример вызова с добавочного номера:
Тот же исходный код отлично работает в Chrome, но не для пользователей Firefox.
В консоли браузера Firefox этот вызов приводит к:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://tf2metrics.azurewebsites.net/api/users/76561198142328193,76561198200094518,76561198090551717. (Reason: CORS header ‘Origin’ cannot be added).
Мой скрипт содержимого выполняется наhttps://tf2center.com/lobbies /* с помощью простой строки jQuery:
$.get(url, function (data) {
// do stuff
});
Я попытался добавить Origin
заголовок, поскольку ошибка гласит, что он «не может быть добавлен»:
$.ajaxSetup({
headers: {
'Origin': "https://tf2center.com"
}
});
Это расширение по-прежнему не работает в Firefox и, кроме того, не работает в Chrome с этим вызовом. Ошибка:
Refused to set unsafe header "Origin"
Поэтому я удалил это. Я немного просмотрел и увидел, что добавление
"permissions": [
"*://*.tf2center.com/*",
...
],
на мой manifest.json
может решить проблему, но это тоже не работает.
Для справки вот ASP.NET Код Core 3.1 Startup.cs
, который я изначально добавил для обработки CORs, когда мне впервые понадобилась поддержка функции для Chrome:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseCors(_ => _.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
...
}
Почему мое расширение Chrome разрешает вызов, а Firefox нет? Что еще я мог бы попытаться исправить ошибку, связанную с Firefox?
Ответ №1:
Я неправильно понял, что нужно добавить в раздел manifest.json
‘s permissions
. Мне нужно включить шаблон соответствия URL, который я хочу вызвать, а не URL источника.
"permissions": [
"https://tf2metrics.azurewebsites.net/*",
...
],
Я обновил только для https
вызовов на моем сайте (не на вызывающем сайте), и теперь он работает в Firefox.