Я разрабатываю расширение Chrome, используя пакет Blazor.BrowserExtension. Цель состоит в том, чтобы манипулировать DOM Gmail, внедряя компоненты Razor и вызывая методы C# из custom.js (скрипт контента). Ниже приведены соответствующие части моей реализации:
manifest.json:
using Blazor.BrowserExtension;
using System;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Test.Components;
namespace Test
{
public static class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.UseBrowserExtension(browserExtension =>
{
if (browserExtension.Mode == BrowserExtensionMode.ContentScript)
{
builder.RootComponents.RegisterForJavaScript("CustomButton");
}
if (browserExtension.Mode == BrowserExtensionMode.Background)
{
builder.RootComponents.AddBackgroundWorker();
}
else
{
builder.RootComponents.Add("#app");
builder.RootComponents.Add("head::after");
}
});
builder.Services.AddScoped();
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
await builder.Build().RunAsync();
}
}
}
Когда я запускаю это, я сталкиваюсь со следующими ошибками:
blazor.webassembly.js:1 Отказано в загрузке сценарий «https://mail.google.com/mail/u/0/framework/dotnet.js», поскольку он нарушает директиву Политики безопасности контента: «script-src 'self' 'wasm-unsafe-eval' .. ."
Я разрабатываю расширение Chrome, используя пакет Blazor.BrowserExtension. Цель состоит в том, чтобы манипулировать DOM Gmail, внедряя компоненты Razor и вызывая методы C# из custom.js (скрипт контента). Ниже приведены соответствующие части моей реализации: manifest.json: [code]{ "manifest_version": 3, "name": "Test Extension", "description": "My browser extension built with Blazor WebAssembly", "version": "0.1", "background": { "service_worker": "content/BackgroundWorker.js", "type": "module" }, "permissions": [ "activeTab", "scripting", "storage" ], "host_permissions": [ "https://mail.google.com/*" ], "action": { "default_popup": "popup.html" }, "options_ui": { "page": "options.html", "open_in_tab": true }, "content_security_policy": { "extension_pages": "script-src 'self' 'wasm-unsafe-eval'; object-src 'self'", "script-src": "'self' 'unsafe-inline' 'unsafe-eval'", "object-src": "'self'" }, "content_scripts": [ { "matches": ["https://mail.google.com/mail/*"], "js": ["framework/blazor.webassembly.js","content/custom.js"], "run_at": "document_idle" } ], "web_accessible_resources": [ { "resources": [ "framework/*", "content/*", "wwwroot/*" ], "matches": [ "https://mail.google.com/*" ] } ] } [/code] Program.cs: [code]using Blazor.BrowserExtension; using System; using System.Net.Http; using System.Threading.Tasks; using Microsoft.AspNetCore.Components.Web; using Microsoft.AspNetCore.Components.WebAssembly.Hosting; using Microsoft.Extensions.DependencyInjection; using Test.Components;
namespace Test { public static class Program { public static async Task Main(string[] args) { var builder = WebAssemblyHostBuilder.CreateDefault(args);
document.head.appendChild(blazorScript); })(); [/code] Когда я запускаю это, я сталкиваюсь со следующими ошибками: [list] [*]blazor.webassembly.js:1 Отказано в загрузке сценарий «https://mail.google.com/mail/u/0/framework/dotnet.js», поскольку он нарушает директиву Политики безопасности контента: «script-src 'self' 'wasm-unsafe-eval' .. ." [*]Необнаружено (в обещании) Ошибка: не удалось запустить платформу. Причина: TypeError: Не удалось получить динамически импортированный модуль: https://mail.google.com/mail/u/0/framework/dotnet.js [*] Не удалось загрузить скрипт модуля: Ожидается. сценарий модуля JavaScript, но сервер ответил MIME-типом «text/html». [*]blazor.webassembly.js:1 Uncaught (в обещании) Ошибка: не удалось запустить платформе. [/list] Мой вопрос: [list] [*]Можно ли использовать Blazor.BrowserExtension внедрить компоненты Razor в DOM Gmail? [*]Связаны ли эти ошибки с ограничениями Blazor.BrowserExtension при обработке CSP Gmail или ограничениями ресурсов? [*]Должен ли я перейти на чистый JavaScript реализация манипулирования DOM в этом случае? [/list] Будем признательны за любые рекомендации.