Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

CORS - Cross Origin Resource Sharing

Saudações terráqueos! _ô/

Após criar uma API, criei também um front simples com HTML e Javascript e me deparei com o tal CORS. Fiz uma pesquisa na internet, encontrei um artigo da Microsoft que explica um pouco e mostra como resolver.

Link do Artigo: https://docs.microsoft.com/pt-br/aspnet/core/security/cors?view=aspnetcore-2.1

Ainda assim fiquei com algumas dúvidas:

  • Existe alguma situação em que eu não precise habilitar o CORS ou é legal sempre habilitar?
  • Quanto a Origem e métodos HTTP eu entendi quando é importante especificar, mas e o cabeçalho, em qual situação devo considerar liberar todos os cabeçalhos com .AllowAnyHeader ou especificar com .WithHeaders?
  • Existem boas práticas relacionado a CORS? Quais?

Obrigado :D

2 respostas
solução!

Oi, Tiago, saudações.

Vi que você aprendeu como habilitar o compartilhamento de recursos para várias origens (o bendito CORS).

Respondendo de trás pra frente...

Boas práticas

A principal coisa que você tem que fazer é pensar uma whitelist dos possíveis domínios que serão permitidos usar os recursos da API. Daí você irá projetar seu código para isso.

Cenários para desabilitar CORS

Um cenário que vislumbro para desabilitar CORS é para controllers ou actions específicos.

Dá uma lida nesse documento da Mozilla (talvez você já tenha visto porque é recomendado no artigo que já relacionou) e veja os possíveis cenários de CORS.

Headers

A questão de habilitar ou não requisições CORS para cabeçalhos específicos está relacionada ao que chamam de author request headers, que segundo a especificação da W3C sobre CORS significa "uma lista de cabeçalhos definida pelo autor da requisição". A idéia do CORS em cabeçalhos é para cenários onde sua API precise suportar cabeçalhos desse tipo.

Espero que tenha ajudado, alienígena. Abraços!

Hmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm Eu não tinha lido esse artigo da Mozilla não hauhauhauhauh!

Muito obrigado, já esclareceu bastante ^^