No meu web.config, gostaria de especificar mais de um domínio para a access-control-allow-origin
diretiva. Eu não quero usar *
. Eu tentei esta sintaxe:
<add name="Access-Control-Allow-Origin" value="http://localhost:1506, http://localhost:1502" />
este
<add name="Access-Control-Allow-Origin" value="http://localhost:1506 http://localhost:1502" />
este
<add name="Access-Control-Allow-Origin" value="http://localhost:1506; http://localhost:1502" />
e este
<add name="Access-Control-Allow-Origin" value="http://localhost:1506" />
<add name="Access-Control-Allow-Origin" value="http://localhost:1502" />
mas nenhum deles funciona. Qual é a sintaxe correta ?
asp.net
iis
cors
web-config
Sam
fonte
fonte
*
valor que permite que qualquer origem acesse o recurso. No entanto, a pergunta original era sobre como colocar na lista de permissões um conjunto de domínios.Para IIS 7.5+ e Rewrite 2.0, você pode usar:
Explicando a
RESPONSE_Access_Control_Allow_Origin
parte da variável do servidor :Em Rewrite, você pode usar qualquer string após
RESPONSE_
e criará o Cabeçalho de Resposta usando o resto da palavra como o nome do cabeçalho (neste caso Access-Control-Allow-Origin). Rewrite usa sublinhados "_" em vez de travessões "-" (reescrever os converte em travessões)Explicando a variável do servidor
HTTP_ORIGIN
:Da mesma forma, em Rewrite você pode pegar qualquer cabeçalho de solicitação usando
HTTP_
como prefixo. Mesmas regras com os travessões (use sublinhados "_" em vez de travessões "-").fonte
(http(s)?:\/\/((.+\.)?(domain1|domain2)\.(com|org|net)))
. Dessa forma, você pode adicionar outros domínios com bastante facilidade e oferecer suporte a vários domínios de nível superior (por exemplo, com, org, net etc.).Na Web.API, este atributo pode ser adicionado usando
Microsoft.AspNet.WebApi.Cors
conforme detalhado em http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-apiNo MVC, você pode criar um atributo de filtro para fazer este trabalho para você:
Em seguida, habilite-o para ações / controladores específicos:
Ou adicione-o para todos os controladores em Global.asax.cs
fonte
Depois de ler todas as respostas e experimentá-las, nenhum deles me ajudou. O que eu descobri ao pesquisar em outro lugar é que você pode criar um atributo personalizado que você pode adicionar ao seu controlador. Ele sobrescreve os do EnableCors e adiciona os domínios da lista de permissões nele.
Esta solução está funcionando bem porque permite que você tenha os domínios permitidos no webconfig (appsettings) em vez de codificá-los no atributo EnableCors no seu controlador.
Encontrei este guia online e funcionou perfeitamente:
http://jnye.co/Posts/2032/dynamic-cors-origins-from-appsettings-using-web-api-2-2-cross-origin-support
Pensei em deixar isso aqui para quem precisa.
fonte
Consegui resolver isso no código de tratamento de solicitação seguindo o conselho de 'monsur'.
fonte
Para IIS 7.5+, você pode usar o módulo IIS CORS: https://www.iis.net/downloads/microsoft/iis-cors-module
Seu web.config deve ser algo assim:
Você pode encontrar a referência de configuração aqui: https://docs.microsoft.com/en-us/iis/extensions/cors-module/cors-module-configuration-reference
fonte
Olhe para a biblioteca Thinktecture IdentityModel - ela tem suporte CORS completo:
http://brockallen.com/2012/06/28/cors-support-in-webapi-mvc-and-iis-with-thinktecture-identitymodel/
E pode emitir dinamicamente a ACA-Origin que você deseja.
fonte
Você pode adicionar este código ao seu projeto webapi asp.net
no arquivo Global.asax
fonte
Você pode usar o middleware owin para definir a política de cors na qual você pode definir várias origens de cors
fonte
Você só precisa:
<add name="Access-Control-Allow-Origin" value="*" />
do seu web.config.depois, adicione isso no
Application_BeginRequest
método de Global.asax:Espero esta ajuda. que funciona para mim.
fonte