18 votos

Acceso a Servicio web de jQuery - cruz de dominio

Estoy tratando de acceder a un servicio wcf de un cliente de jQuery

Específicamente en este ejemplo http://www.codeproject.com/KB/aspnet/WCF_JQUERY_ASMX.aspx#4

Todo funciona bien cuando el cliente de la página web se encuentra en el mismo dominio que el servicio de

Tan pronto como puedo mover el cliente de la página web a otro dominio en el que se rompe. No puede llegar a la de servicio y la solicitud falla

Esto ocurre para todos los ejemplos, ASMX, el DESCANSO y la WCF

alguna idea de cómo conseguir este trabajo de la cruz daomain?

10voto

GlenCrawford Puntos 2343

Son en contra de la Política de Mismo Origen. El servicio web a los que acceda debe residir en el mismo dominio que el script jQuery que hace la solicitud. Esta política es aplicada por todos los navegadores para evitar que - por ejemplo - cross-site scripting y ataques de inyección de código en aplicaciones web.

Hay varias formas de hacerlo, incluyendo JSONP, Apoderados o Flash.

Vamos a necesitar un poco más de información antes de que podamos sugerir la técnica que se debe utilizar. Tiendo a favor JSONP. Pero mientras tanto, aquí un poco de la luz de lectura:

http://taossa.com/index.php/2007/02/08/same-origin-policy/

https://developer.mozilla.org/En/Same_origin_policy_for_JavaScript

He aquí un ejemplo de uso de JSONP:

url = "http://www.test.com/getData.php?callback=parseResults";

document.body.appendChild((function() {
    var newScript = document.createElement("script");
    newScript.type = "text/javascript";
    newScript.src = url;
    return newScript;
})());

function parseResults(data) {
    alert(data);
}

1voto

Andy E Puntos 132925

Usted puede ser que desee comprobar hacia fuera JSONP (JSON con Relleno). En definitiva, consiste en la adición de un elemento de secuencia de comandos a la página con la dirección url del servicio web como el src. El servicio web, a continuación, ajusta el JSON como el primer argumento en una función de devolución de llamada que se ejecuta cuando la secuencia de comandos se analiza.

Los elementos de Script están exentos desde el Origen Mismo de la Política, que es la forma en que son capaces de conseguir alrededor de este problema..

0voto

Matt Gibson Puntos 15086

Normalmente, usted no será capaz de; navegadores modernos restringir el uso de este para evitar ataques xss. Una solución puede ser el uso de "acolchado" JSON, JSONP, que inserta los resultados en un elemento de secuencia de comandos en su página. Hay un Microsoft WCF muestra aquí, que parece hacer.

0voto

R Francky Puntos 39

Yo se enfrentó al mismo problema durante 2 días y he encontrado la solución, y es elegante después de googlear un montón. Necesitaba xss Ajax para algunos widget de clientes que tire de flujo de datos desde los niveles sitios web para mi aplicación Rails. aquí es como yo lo hice.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: