origin net mvc enablecors enable control classic asp allow asp.net-mvc-4 asp.net-web-api iis-7.5 cors

asp.net mvc 4 - net - Los encabezados CORS se anexan a la respuesta HTTP no enviada al navegador



enable cors web config (1)

Escribo directamente a los encabezados de solicitud en un ASP.NET MVC a través del objeto HttpContext.Current y, sin embargo, estos encabezados no se envían al navegador ... ¿Alguna idea de lo que podría causar esto? SÓLO obtengo los encabezados si los agrego a través de web.config. Esto no funciona para mí, ya que necesito permitir dominios múltiples para Access-Control-Allow-Origin .

Intenté escribir los encabezados directamente en HttpContext.Current usando este código.

context.Response.AppendHeader("Access-Control-Allow-Origin", origin); context.Response.Cache.SetCacheability(HttpCacheability.NoCache); context.Response.ContentType = "text/plain"; context.Response.Write("Hello World " + DateTime.Now.ToString());

Obtengo el mundo de hola pero no los encabezados.

También intenté utilizar Thinktecture.IdentityModel.Http.Cors.WebApi pero Thinktecture.IdentityModel.Http.Cors.WebApi los mismos resultados, que no es nada. Comprobé y volví a verificar mi código para asegurarme de que se ajusta al tutorial] 1 . He configurado los encabezados en Web.config e intenté a través de Thinktecture. Sin embargo, solo obtengo los encabezados cuando Access-Control-Allow-Origin está en web.config, pero sigo recibiendo un error en Chrome / FF. Parece que los encabezados solo se envían en la solicitud OPTIONS, pero no estoy seguro.

Accept:*/* Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3 Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en;q=0.8,ga;q=0.6,pt-BR;q=0.4,pt;q=0.2 Access-Control-Request-Headers:accept, origin, content-type Access-Control-Request-Method:GET Authorization:Negotiate REDACTED Cache-Control:max-age=0 Connection:keep-alive Host:bpapi.domain.com Origin:http://dev-02 Referer:http://dev-02/_Layouts/PAR/NewParItem.aspx User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31 HTTP/1.1 200 OK Server: Microsoft-IIS/7.5 Persistent-Auth: false X-Powered-By: ASP.NET Access-Control-Allow-Origin: http://dev-02 Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept WWW-Authenticate: Negotiate REDACTED Date: Sat, 06 Apr 2013 00:35:31 GMT Content-Length: 0

Aquí está el web.config como un pastebin para no complicar la pregunta. WebDAV no está instalado.

public class CorsConfig { public static void RegisterCors(HttpConfiguration httpConfig) { WebApiCorsConfiguration corsConfig = new WebApiCorsConfiguration(); corsConfig.RegisterGlobal(httpConfig); corsConfig .ForResources(new string[] { "Industries", "Projects" }) .ForOrigins(new string[] { "http://dev-01", "http://dev-02" }) .AllowAll(); } }

Aquí está el código de Thinktecture:

protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); //CorsConfig.RegisterCors(GlobalConfiguration.Configuration); RegisterCors(MvcCorsConfiguration.Configuration); } private void RegisterCors(MvcCorsConfiguration corsConfig) { corsConfig .ForResources(new string[] {"Industries", "Projects" }) .ForOrigins(new string[] { "http://dev-01", "http://dev-02" }) .AllowAll(); }

Actualización 04/04/04: ni context.Response.AppendHeader(...) ni context.Response.AddHeader(...) tienen ningún efecto. Chrome y FF parecen estar bien si obtienen JSONP independientemente del encabezado allow origin, por lo que mi proyecto funciona al menos. También probé <remove name="OPTIONSVerbHandler"/> sin éxito. Implementaré la aplicación MVC en un nuevo servidor para ver si se trata de algo localizado en la máquina específica.