Acceder al servicio web desde jQuery: dominio cruzado

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

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

Todo funciona bien cuando la página web del cliente está en el mismo dominio que el servicio

Tan pronto como muevo la página web del cliente a otro dominio, se rompe. No puede alcanzar el servicio y la solicitud falla

Esto sucede para todos los ejemplos, ASMX, REST y WCF

Alguna idea de cómo obtener este trabajo cross daomain?

Estás corriendo contra la Política del mismo origen. El servicio web al que está accediendo debe residir en el mismo dominio que el script jQuery que realiza la solicitud. Esta política se aplica por todos los navegadores para evitar, por ejemplo, secuencias de comandos entre sitios y ataques de inyección de código en aplicaciones web.

Hay varias formas de evitarlo, como JSONP, Proxies o Flash.

Necesitaremos un poco más de información antes de que podamos sugerir qué técnica debe usar. Tiendo a favorecer a JSONP . Pero mientras tanto, aquí hay algo de lectura ligera:

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

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

Aquí hay 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); } 

Es posible que desee comprobar JSONP (JSON con relleno) . En resumen, implica agregar un elemento de script a la página con la url del servicio web como src. El servicio web luego ajusta el JSON como el primer argumento en una función de callback, que se ejecuta cuando se analiza el guión.

Los elementos del script están exentos de la Política del mismo origen , que es la forma en que pueden evitar este problema.

Por lo general, no podrás; los navegadores modernos restringen esto para evitar ataques de scripts entre sitios. Una forma de evitarlo es usar JSON “JSONP” “acolchado”, que inserta los resultados en un elemento de script en su página. Aquí hay una muestra de Microsoft WCF que parece hacer eso.

Me enfrenté al mismo problema durante 2 días y encontré la solución, y es elegante después de buscar en Google mucho. Necesitaba xss Ajax para algunos clientes de widgets que extraen datastream de los sitios web de los niveles a mi aplicación Rails. así es como lo hice.