У меня есть приложение MAUI, которое отправляет данные на локальный SQL-сервер через API (ASP.NET, поэтому 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()
})
});
Код: Выделить всё
Access to fetch at 'http://192.168.X.X:5000/api/response' from origin 'https://localhost:7000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.Код: Выделить всё
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#.