3:34 0 0
Error al consultar el web servicie desde JAVASCRIPT de una aplicación ASP

Error al consultar el web servicie desde JAVASCRIPT de una aplicación ASP

  DrUalcman |  agosto 42017

Hoy me encontré con un problema que aun no me había sucedido nunca, y por suerte tuve fácil y rápida solución. Cree un widget en JAVASCRIPT para que buscara los códigos postal y que devolviera el valor del código postal.

Cuando lo quise utilizar desde una web externa a mi servidor, resulta que no se ejecutaba. EL problema estaba en la llamada al servicio web (webservice), que me denegaba el acceso. La solución, como siempre, habilitar el acceso en el webconfig para utilizar URLs que no sean del mismo servidor.

Esto es porque la consultar con AJAX solicita el webservice desde un encabezado diferente, y este controla el origen. Ya que esta haciendo una solicitud cruzada (CORS)

Access-Control-Allow-Origin

Hay que especificar en el webconfig que permita las solicitudes cruzadas dela siguiente forma:

  < system.webServer>
< httpProtocol>
< customHeaders>
< add name="Access-Control-Allow-Headers" value="accept, content-type" />
< add name="Access-Control-Allow-Origin" value="http://localhost" />
< add name="Access-Control-Allow-Methods" value="POST, GET, OPTIONS" />
< /customHeaders>
< /httpProtocol>
< /system.webServer>

Si no te funciona haciendo en el webconfig, a mi me funciono, tambien tienes la posibilidad de especificarlo en el fichero global.asax de la siguiente forma:

void Application_BeginRequest(object sender, EventArgs e)
{
var context = HttpContext.Current;
var response = context.Response;

// enable CORS
response.AddHeader("Access-Control-Allow-Origin", "*");

if (context.Request.HttpMethod == "OPTIONS")
{
response.AddHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
response.End();
}
}

Happy codding


Articulo Con la Solucion


#errores #IIS #AJAX #CSHARP #ASP #seguridad 

0 Comentarios

 
 
 

Archivo