У меня ошибка блокировки политики CORS только при загрузке файла на сервер с использованием As pNet Core API 3.1. Добавление политики cors к запуску различными способами и использование собственного промежуточного программного обеспечения не решило мою проблему.
Запуск:
// ConfigureServices
services.AddCors(options =>
{
options.AddPolicy("EnableSVCCors", builder =>
{
builder
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod()
.Build();
});
});
// Настройка
app.UseCors("EnableSVCCors");
Все методы API работают нормально при вызове с веб-сайта реагирующего клиента, но при попытке загрузить изображение появляется следующая ошибка:
Доступ к XMLHttpRequest по адресу http://172.16.1.34: 1980 / api / account / uploadAvatar 'from origin' http://172.16.1.35: 3000 'заблокировано политикой CORS: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».
Я также пытаюсь изменить политику Cors, как показано ниже, но не работает:
services.AddCors(options =>
{
options.AddPolicy("EnableSVCCors", builder =>
{
builder
.WithOrigins("http://172.16.1.35:3000")
.AllowAnyHeader()
.AllowAnyMethod()
.Build();
});
});
Примечание: вызов http://172.16.1.34: 1980 / api / account / uploadAvatar Использование PostMan и отправка строки base64 в качестве изображения работает нормально! Таким образом, нет проблем с ограничениями доступа к папке, в которой будет сохранено изображение.
Я также попытался добавить пользовательское промежуточное ПО, как показано ниже, но пока не работает:
public class CorsMiddleWare
{
private readonly RequestDelegate _next;
public CorsMiddleWare(RequestDelegate next)
{
_next = next;
}
public Task Invoke(HttpContext httpContext)
{
httpContext.Response.Headers.Add("Access-Control-Allow-Origin", "http://172.16.1.35:3000");
return _next(httpContext);
}
}
public static class CorsMiddlewareExtensions
{
public static IApplicationBuilder UseCorsMiddleware(this IApplicationBuilder builder)
{
return builder.UseMiddleware<CorsMiddleWare>();
}
}
У любого есть Любая идея, пожалуйста?
РЕДАКТИРОВАТЬ: Вернуться заголовки в консоли, как показано ниже
Запрос URL: http://172.16.1.34: 1980 / api / account / uploadAvatar Политика реферера: no-referer-when-downgrade Дата: вторник, 14 апреля 2020 г. 03:50:49 GMT Сервер: Microsoft-IIS / 10.0 Кодирование передачи: chunked X-Powered-By: ASP. NET Accept: application / json, текст / обычный текст, / Accept-Encoding: gzip, deflate Accept-Language: en-US, en; q = 0,9 Авторизация: Bearer eyJhb ..... Соединение: keep-alive Длина содержимого: 22869 Тип содержимого: application / json; charset = UTF-8 Хост: 172.16.1.34:1980 Источник: http://172.16.1.35: 3000 Ссылка: http://172.16.1.35: 3000 / create-profile Пользователь-агент: Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537,36 (K HTML, как Gecko) Chrome / 80.0.3987.163 Safari / 537.36 {fileName: "avatar", mediaType: "image / png",…} fileName: "avatar" mediaType: "image / png" буфер: "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6CAYAAACI7Fo9AAAgAE