Mucho ha cambiado desde la primera vez publicado mi solución para CORS en Internet Explorer 7 o superior. En primer lugar, la propiedad jQuery $ .support.cors es verdadera de forma predeterminada,.NET Framework 4.0 y superior ya no es compatible con CORS tal como se implementó en las versiones 3.5.1 y anteriores. Al escribir un servicio web con ASP.NET 4.0, instalé Thinktecture.IdentityModel, que está disponible como paquete NuGet. Luego, en el método Application_Start del archivo Global.asax, añadir:
void Application_Start(object sender, EventArgs e)
{
Thinktecture.IdentityModel.Http.Cors.IIS.UrlBasedCorsConfiguration.Configuration
.ForResources("*")
.ForOrigins("http://localhost:80, http://mydomain")
.AllowAll()
.AllowMethods("GET", "POST");
}
Ahora añadir el elemento httpProtocol dentro system.webServer:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type, Accept, X-Requested-With, X-File-Name" />
<add name="Access-Control-Allow-Methods" value="GET, POST" />
</customHeaders>
</httpProtocol>
Mi llamado es ahora $ .ajax:
$.ajax({
url: serviceUrl,
data: JSON.stringify(postData),
type: "POST",
cache: false,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: onSuccess,
error: onError
});
IE 10 funciona bien, IE8/9 con limitación. Consulte http://caniuse.com/#search=cors – gavenkoa
¿Cuáles son las limitaciones específicas del soporte de CORS en IE9? – Umopepisdn