Я пытаюсь развернуть приложение, которое я создал онлайн. Пользовательский интерфейс создается с использованием vue.js и вызывает API, написанный в ядре dotnet. Я использую dotnet core 2.2.
Веб-проект и API находятся на разных серверах и доступны в разных доменах, веб-проект размещается на Netlify, если это имеет значение. Мне удалось настроить политику CORS, чтобы локально все работало нормально. Когда я получаю доступ к приложению на веб-сервере, я получаю ошибки CORS всякий раз, когда я публикую данные. Мои GET
и DELETE
запросы работают просто отлично.
Вот моя политика CORS
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("Default", builder =>
{
builder.WithOrigins(/* the domain where my web project is hosted */);
builder.AllowAnyMethod();
builder.AllowAnyHeader();
builder.AllowCredentials();
});
});
}
Так что я думаю, что все должно быть в порядке. AllowCredentials
требуется, потому что я использую SignalR, который в противном случае не сработал бы.
Сообщение об ошибке в инструментах разработки:
POST [моя конечная точка API] 400 (BadЗапрос)
Доступ к XMLHttpRequest в «[моей конечной точке API] из источника» https://xxx.netlify.com' заблокирован политикой CORS: в заголовке «Access-Control-Allow-Origin» нет заголовказапрашиваемый ресурс.
И когда я заглядываю в консоль, где выполняется мой проект dotnet, я вижу следующее сообщение об ошибке
Идентификатор соединения "0HLQNTR19GE1T" неверные данные запроса: "Запросы с «Connection: Upgrade» не могут содержать содержимое в теле запроса ». Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException: запросы с «Connection: Upgrade» не могут иметь содержимое в теле запроса. в Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException.Throw (причина RequestRejectionReason) в Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1MessageBody.For (HttpVersion httpVersion, Http. .Server.Kestrel.Core.Internal.Http.Http1Connection.CreateMessageBody () в Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests [TContext] (приложение IHttpApplication`1.Ser. Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequestsAsync [TContext] (приложение IHttpApplication`1)
До сих пор я пытался установить заголовок Access-Control-Allow-Origin = "*"
через файл netlify.toml, используя [EnableCors]
атрибут моего действия контроллера. Я отредактировал свой запрос AJAX (axios) и установил withCredentials: true
и вообще много играл с политикой CORS. К сожалению, без удачи, и у меня заканчиваются идеи.
Я рад любым предложениям.