Pregunta

¿Es posible hacer una llamada a través del sitio, en Javascript, a un servicio WCF?

No me importa si es un POST o GET.

Pero he oído que en estos días, los navegadores no permiten llamadas entre sitios, ya sea con POST o GET.

¿Cómo puedo evitar esto y todavía llamar a un servicio WCF

¿Fue útil?

Solución

No hay mucho que puede hacer para eludir los bloqueadores de cross-site scripting del navegador. Esos bloqueadores dejan de XMLHTTPRequest ocurra a cualquier dominio, pero el que carga el script o la página que contiene.

Dicho esto, hay una solución de uso general: Usar JavaScript para escribir una nueva entrada en el DOM que hace referencia a un src que es una URL de sitios cruzados. Pasará por todos sus argumentos del método RPC a este "guión" que devolverá algo de JavaScript que se ejecutará, diciéndole éxito o el fracaso.

No hay manera de hacer un post de esta manera, la URL src debe ser un GET, por lo que puede pasar argumentos de esa manera. No estoy seguro de si WCF tiene un método "GET única" de acceso. Y, ya que el navegador va a esperar el resultado de la etiqueta remoto para ser un objeto de JavaScript válida, tendrá que asegurarse de que su servicio de WCF obedece a que, además, de lo contrario obtendrá errores de JavaScript.

Otro método común de eludir cross-site scripting es escribir un proxy para sus peticiones. En otras palabras, si desea acceder a la test.com dominio desde los scripts alojados en example.com, a continuación, hacer un poco de URL en example.com que los proxies de la solicitud a través de test.com de la manera adecuada.

Para su ejemplo, el proxy es probable que la respuesta correcta, suponiendo que WCF no tiene su propio restricciones cross-site scripting.

Otros consejos

¿Está utilizando jQuery, por casualidad? jQuery soporta peticiones entre dominios utilizando JSON "JSONP". Estará limitado a las peticiones GET, pero yo he probado y funciona bien! También es muy fácil de conseguir trabajo.

Vea la "getJSON entre dominios (usando JSONP)" en esta página para obtener más información: http://docs.jquery.com/Release:jQuery_1.2/Ajax

Y aquí hay algunos antecedentes sobre JSONP: http://bob.pythonmac.org/archives/2005 / 12/05 / remoto-JSON-jsonp /

Déjame saber cómo va!

Las nuevas recomendaciones del W3C se están estandarizando para permitir peticiones de dominio cruzado entre partes de confianza a través de la Acceso control por Cross-Site Pide especificación .

Esto requiere un servidor que sirve cabeceras HTTP de control de acceso adecuados y un navegador capaces de comprender y actuar sobre dichas cabeceras.

En resumen, si un host remoto dice que le gusta su dominio, y un navegador entiende lo que esto significa, puede realizar XmlHttpRequests contra ese host, independientemente de la política del mismo origen.

Actualmente muy pocos navegadores soportan esta funcionalidad. IE8 hace parecer (no he probado) y Firefox 3.1 no (he probado esto extensivamente). Espero que otros navegadores a hacer lo mismo con bastante rapidez.

Usted no debe esperar la adopción suficiente de los navegadores compatibles hasta 2012 como muy pronto.

Esa es la solución definitiva al problema. La desventaja está a la espera de unos años antes de que pueda ser utilizado en aplicaciones de uso común.

Si esto es para su uso dentro de un ambiente a controlar totalmente, como para una intranet donde se puede determinar qué navegador se utiliza y donde se pueden configurar varios servidores para la emisión de las cabeceras correctas, funciona perfectamente.

Para ampliar la respuesta de Ben ... me ampliado nuestro servicio WCF para apoyar JSONP llamadas de jQuery usando un código similar a este ejemplo de Microsoft:

http://msdn.microsoft.com/en-us/library /cc716898.aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top