En mi web.config me gustaría especificar más de un dominio para la access-control-allow-origin
directiva. No quiero usar *
. Probé esta sintaxis:
<add name="Access-Control-Allow-Origin" value="http://localhost:1506, http://localhost:1502" />
éste
<add name="Access-Control-Allow-Origin" value="http://localhost:1506 http://localhost:1502" />
éste
<add name="Access-Control-Allow-Origin" value="http://localhost:1506; http://localhost:1502" />
y éste
<add name="Access-Control-Allow-Origin" value="http://localhost:1506" />
<add name="Access-Control-Allow-Origin" value="http://localhost:1502" />
pero ninguno de ellos funciona. Cual es la sintaxis correcta ?
asp.net
iis
cors
web-config
Sam
fuente
fuente
*
valor que permite que cualquier origen acceda al recurso. Sin embargo, la pregunta original era sobre la inclusión de un conjunto de dominios en la lista blanca.Para IIS 7.5+ y Rewrite 2.0 puede usar:
Explicando la
RESPONSE_Access_Control_Allow_Origin
parte de la variable del servidor :en Rewrite puede usar cualquier cadena después
RESPONSE_
y creará el Encabezado de respuesta usando el resto de la palabra como el nombre del encabezado (en este caso, Access-Control-Allow-Origin). La reescritura usa guiones bajos "_" en lugar de guiones "-" (la reescritura los convierte en guiones)Explicación de la variable del servidor
HTTP_ORIGIN
: demanera similar, en Rewrite puede tomar cualquier Encabezado de solicitud usando
HTTP_
como prefijo. Las mismas reglas con los guiones (use guiones bajos "_" en lugar de guiones "-").fuente
(http(s)?:\/\/((.+\.)?(domain1|domain2)\.(com|org|net)))
. De esa manera, puede agregar otros dominios con bastante facilidad y admitir varios dominios de nivel superior (por ejemplo, com, org, net, etc.).En Web.API, este atributo se puede agregar usando
Microsoft.AspNet.WebApi.Cors
como se detalla en http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-apiEn MVC , puede crear un atributo de filtro para hacer este trabajo por usted:
Luego, habilítelo para acciones / controladores específicos:
O agréguelo para todos los controladores en Global.asax.cs
fuente
Después de leer todas las respuestas y probarlas, ninguna me ayudó. Lo que encontré mientras buscaba en otro lugar es que puede crear un atributo personalizado que luego puede agregar a su controlador. Sobrescribe los de EnableCors y agrega los dominios incluidos en la lista blanca.
Esta solución está funcionando bien porque le permite tener los dominios en la lista blanca en el webconfig (appsettings) en lugar de codificarlos en el atributo EnableCors en su controlador.
Encontré esta guía en línea y funcionó a las mil maravillas:
http://jnye.co/Posts/2032/dynamic-cors-origins-from-appsettings-using-web-api-2-2-cross-origin-support
Pensé en dejar eso aquí para cualquiera que lo necesite.
fuente
Logré resolver esto en el código de manejo de solicitudes siguiendo los consejos de 'monsur'.
fuente
Para IIS 7.5+, puede utilizar el módulo IIS CORS: https://www.iis.net/downloads/microsoft/iis-cors-module
Tu web.config debería ser algo como esto:
Puede encontrar la referencia de configuración aquí: https://docs.microsoft.com/en-us/iis/extensions/cors-module/cors-module-configuration-reference
fuente
Mire en la biblioteca Thinktecture IdentityModel: tiene soporte completo para CORS:
http://brockallen.com/2012/06/28/cors-support-in-webapi-mvc-and-iis-with-thinktecture-identitymodel/
Y puede emitir dinámicamente el origen ACA que desee.
fuente
Puede agregar este código a su proyecto asp.net webapi
en el archivo Global.asax
fuente
Puede usar el middleware owin para definir la política de cors en la que puede definir múltiples orígenes de cors
fuente
Solo necesitas:
<add name="Access-Control-Allow-Origin" value="*" />
de su web.config.luego, agregue esto en el
Application_BeginRequest
método de Global.asax:Espero esta ayuda. que funciona para mi.
fuente