У меня есть приложение MAUI, которое отправляет данные на локальный SQL-сервер через API (ASP.NET Core, поэтому C#), который я, конечно, также запускаю локально. Для этого я использую свой частный IP-адрес:
Код: Выделить всё
var response = await http_client.PostAsync(
"http://192.168.X.X:5000/api/response",
content
Теперь у меня также есть веб-приложение, из которого я хочу отправлять данные таким же образом в API, но у меня возникла проблема с этим.
У меня есть этот код для нажатия кнопки:
Код: Выделить всё
document.getElementById("test-btn").addEventListener("click", async () => {
const res = await fetch("http://192.168.X.X:5000/api/response", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
alertIDLong: crypto.randomUUID(),
alertIDShort: crypto.randomUUID().slice(0, 8),
information: document.getElementById("message-input").value,
eventDateTime: new Date().toISOString()
})
});
Доступ к выборке по адресу «http://192.168.X.X:5000/api/response» из источника «https://localhost:7000» заблокирован политикой CORS: ответ на предполетный запрос не проходит проверку контроля доступа: нет Заголовок «Access-Control-Allow-Origin» присутствует в запрошенном ресурсе.
Поиск этой ошибки в Интернете показался, что это ошибка, с которой столкнулись несколько человек и некоторые из них ее решили. Однако я не могу найти решение в своем случае (все выполняется локально). Я попытался настроить Program.cs, чтобы справиться с этим:
Код: Выделить всё
using AzureNotificationDemo.Hubs;
using AzureNotificationDemo.Services;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSignalR();
builder.Services.AddHttpClient();
builder.Services.AddSingleton();
builder.Services.AddControllers();
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigin", policy =>
{
policy
.WithOrigins("http://192.168.1.169")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
var app = builder.Build();
app.UseStaticFiles();
app.UseRouting();
app.UseCors("AllowLocalFrontend");
app.UseAuthorization();
app.MapControllers().RequireCors("AllowLocalFrontend");
app.MapHub("/databaseHub");
var dbService = app.Services.GetRequiredService();
_ = Task.Run(() => dbService.PollForUpdates());
app.Run();
Есть ли у кого-нибудь идеи, как решить эту проблему? Возможно, потому, что я управляю всем локально, это сложнее. База кода находится на C#.