Estou tentando habilitar o compartilhamento de recursos de origem cruzada na minha API da Web do ASP.NET Core, mas estou preso.
O EnableCors
atributo aceita policyName
do tipo string
como parâmetro:
// 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);
O que policyName
significa e como posso configurar o CORS em uma API da Web do ASP.NET Core?
c#
asp.net-core
Oluwafemi
fonte
fonte
Respostas:
Você precisa configurar uma política do CORS na inicialização do aplicativo no
ConfigureServices
método:O
CorsPolicyBuilder
inbuilder
permite que você configure a política de acordo com suas necessidades. Agora você pode usar esse nome para aplicar a política a controladores e ações:Ou aplique-o a cada solicitação:
fonte
UseCors
método de extensão. Observe que o middleware CORS deve preceder quaisquer pontos de extremidade definidos no seu aplicativo que você deseja suportar solicitações de origem cruzada (ex antes de qualquer chamada paraUseMvc
). "Aplica-se ao .NET Core 1 e .Net Core 2 (mais abaixo)
Se estiver usando
.Net-Core 1.1
Infelizmente, os documentos são muito confusos neste caso específico. Então, eu vou simplificar:
Microsoft.AspNetCore.Cors
um pacote nuget ao seu projetoConfigureServices
método, adicioneservices.AddCors();
No
Configure
método, antes de chamarapp.UseMvc()
eapp.UseStaticFiles()
, adicione:É isso aí. Todo cliente tem acesso ao seu site / API principal do ASP.NET.
Se estiver usando
.Net-Core 2.0
Microsoft.AspNetCore.Cors
um pacote nuget ao seu projetoNo
ConfigureServices
método, antes de chamarservices.AddMvc()
, adicione:(Importante) No
Configure
método, antes de chamarapp.UseMvc()
, adicioneapp.UseCors("AllowAll");
AllowAll
é o nome da política que precisamos mencionar em app.UserCors. Pode ser qualquer nome.fonte
.UseCors()
antes.UseMvc()
Com base na resposta de Henk, consegui criar um domínio específico, o método que desejo permitir e também o cabeçalho que desejo ativar o CORS para:
uso:
fonte
To critique or request clarification from an author
Acho que não é o caso aqui e a resposta de Henk já foi marcada. Minha resposta foi um complemento, se você deseja permitir domínios específicos.ConfigureCors
foi alterado paraAddCors
.Especificamente no dotnet core 2.2 com SignalR, você deve alterar
.WithOrigins("http://localhost:3000")
ou.SetIsOriginAllowed(isOriginAllowed: _ => true) //for all origins
em vez disso
.AllowAnyOrigin()
com.AllowCredentials()
https://trailheadtechnology.com/breaking-change-in-aspnetcore-2-2-for-signalr-and-cors/
https://github.com/aspnet/AspNetCore/issues/4483
fonte
Se você está hospedando no IIS, um possível motivo é que você está recebendo isso porque o IIS está bloqueando o
OPTIONS
verbo. Passei quase uma hora por causa disso:Uma indicação reveladora é que você está recebendo
404
erro durante aOPTIONS
solicitação.Para corrigir isso, você precisa dizer explicitamente ao IIS para não bloquear a
OPTIONS
solicitação.Vá para Solicitar filtragem:
Verifique se OPTIONS é permitido:
Ou, basta criar um
web.config
com a seguinte configuração:fonte
fonte
`
`
fonte
Trabalhei com o .Net Core 3.1 da seguinte maneira
1. Certifique-se de colocar o código UseCors entre app.UseRouting (); e app.UseAuthentication ();
2.Em seguida, coloque esse código no método ConfigureServices
3.E acima do controlador base, coloquei este
Agora todos os meus controladores herdarão do BaseController e terão o CORS ativado
fonte
place the UseCors code between app.UseRouting(); and app.UseAuthentication();
Etapa 1: precisamos do pacote Microsoft.AspNetCore.Cors em nosso projeto. Para instalar, vá em Ferramentas -> Gerenciador de Pacotes NuGet -> Gerenciar pacotes NuGet para solução. Procure Microsoft.AspNetCore.Cors e instale o pacote.
Etapa 2: precisamos injetar o CORS no contêiner para que ele possa ser usado pelo aplicativo. Na classe Startup.cs, vamos para o método ConfigureServices e registramos o CORS.
Portanto, em nosso aplicativo para servidor, vamos para Controllers -> HomeController.cs e adicione o decorador EnableCors ao método Index (ou seu controlador e ação específicos):
Para mais detalhes clique aqui
fonte
Toda a solução alternativa mencionada acima pode funcionar ou pode não funcionar, na maioria dos casos não funcionará. Eu dei a solução aqui
Atualmente, estou trabalhando em Angular e Web API (.net Core) e me deparei com o problema do CORS explicado abaixo
A solução fornecida acima sempre funcionará. Com a solicitação 'OPTIONS', é realmente necessário habilitar 'Autenticação Anônima'. Com a solução mencionada aqui, você não precisa executar todas as etapas mencionadas acima, como as configurações do IIS.
De qualquer forma, alguém marcou minha postagem acima como duplicada nesta postagem, mas posso ver que essa postagem é apenas para habilitar o CORS no ASP.net Core, mas minha postagem está relacionada a, Habilitando e implementando o CORS no ASP.net Core e Angular.
fonte