Я пытаюсь включить общий доступ к ресурсам через мой исходный интерфейс ASP.NET Core Web API, но я застрял.
EnableCors
Атрибут принимает policyName
типа в string
качестве параметра:
// Summary:
// Creates a new instance of the Microsoft.AspNetCore.Cors.Core.EnableCorsAttribute.
//
// Parameters:
// policyName:
// The name of the policy to be applied.
public EnableCorsAttribute(string policyName);
Что policyName
означает и как я могу настроить CORS в ASP.NET Core Web API?
c#
asp.net-core
Oluwafemi
источник
источник
Ответы:
Вы должны настроить политику CORS при запуске приложения в
ConfigureServices
методе:CorsPolicyBuilder
Вbuilder
позволяет настроить политику для ваших нужд. Теперь вы можете использовать это имя для применения политики к контроллерам и действиям:Или примените его к каждому запросу:
источник
UseCors
метод расширения. Обратите внимание, что промежуточное программное обеспечение CORS должно предшествовать любым определенным конечным точкам в вашем приложении, которые вы хотите поддерживать между источниками запросов (например, перед любым звонкомUseMvc
).Относится к .NET Core 1 и .Net Core 2 (далее)
При использовании
.Net-Core 1.1
К сожалению, документы в этом конкретном случае очень запутанные. Так что я сделаю это очень просто:
Microsoft.AspNetCore.Cors
пакет nuget в свой проектConfigureServices
метод добавьтеservices.AddCors();
В
Configure
методе перед вызовомapp.UseMvc()
иapp.UseStaticFiles()
добавьте:Вот и все. Каждый клиент имеет доступ к вашему основному веб-сайту / API ASP.NET.
При использовании
.Net-Core 2.0
Microsoft.AspNetCore.Cors
пакет nuget в свой проектв
ConfigureServices
методе перед вызовомservices.AddMvc()
добавьте:(Важно) В
Configure
методе перед вызовомapp.UseMvc()
добавьтеapp.UseCors("AllowAll");
AllowAll
это имя политики, которое мы должны упомянуть в app.UserCors. Это может быть любое имя.источник
.UseCors()
перед.UseMvc()
Основываясь на ответе Хенка, я смог придумать конкретный домен, метод, который я хочу разрешить, а также заголовок, который я хочу включить CORS для:
использование:
источник
To critique or request clarification from an author
Я не думаю, что это так, и ответ Хенка уже отмечен. Мой ответ был дополнением, если вы хотите разрешить определенные домены.ConfigureCors
было изменено наAddCors
.В частности, в dotnet core 2.2 с SignalR вы должны изменить
.WithOrigins("http://localhost:3000")
или.SetIsOriginAllowed(isOriginAllowed: _ => true) //for all origins
вместо того, чтобы
.AllowAnyOrigin()
с.AllowCredentials()
https://trailheadtechnology.com/breaking-change-in-aspnetcore-2-2-for-signalr-and-cors/
https://github.com/aspnet/AspNetCore/issues/4483
источник
Если вы размещаете на IIS, одна из возможных причин этого заключается в том, что IIS блокирует
OPTIONS
глагол. Я провел почти час из-за этого:Одно контрольное указание - вы получаете
404
ошибку во времяOPTIONS
запроса.Чтобы это исправить, нужно явно указать IIS не блокировать
OPTIONS
запрос.Перейти к фильтрации запросов:
Убедитесь, что опции доступны:
Или просто создайте
web.config
со следующей настройкой:источник
источник
`
`
источник
Получил это работать с .Net Core 3.1 следующим образом
1. Убедитесь, что вы поместили код UseCors между app.UseRouting (); и app.UseAuthentication ();
2. Затем поместите этот код в метод ConfigureServices.
3.И над базовым контроллером я разместил этот
Теперь все мои контроллеры будут наследоваться от BaseController и иметь включенный CORS
источник
place the UseCors code between app.UseRouting(); and app.UseAuthentication();
Шаг 1: Нам нужен пакет Microsoft.AspNetCore.Cors в нашем проекте. Для установки зайдите в Инструменты -> Диспетчер пакетов NuGet -> Управление пакетами NuGet для решения. Найдите файл Microsoft.AspNetCore.Cors и установите пакет.
Шаг 2: Нам нужно внедрить CORS в контейнер, чтобы он мог использоваться приложением. В классе Startup.cs давайте перейдем к методу ConfigureServices и зарегистрируем CORS.
Итак, в нашем серверном приложении давайте перейдем к Controllers -> HomeController.cs и добавим декоратор EnableCors в метод Index (или ваш конкретный контроллер и действие):
Для получения более подробной информации нажмите здесь
источник
Все обходные пути, упомянутые выше, могут работать или не работать, в большинстве случаев это не будет работать. Я дал решение здесь
В настоящее время я работаю над Angular и Web API (.net Core) и столкнулся с проблемой CORS, описанной ниже.
Решение, представленное выше, всегда будет работать. С запросом «OPTIONS» действительно необходимо включить «Anonymous Authentication». С упомянутым здесь решением вам не нужно делать все шаги, упомянутые выше, например, настройки IIS.
В любом случае, кто-то пометил мой пост как дубликат этого поста, но я вижу, что этот пост предназначен только для включения CORS в ASP.net Core, но мой пост связан с тем, Включение и внедрение CORS в ASP.net Core и Angular.
источник