style script change attribute javascript websocket xmlhttprequest cross-domain

javascript - script - title css



Cómo hacer una solicitud de dominio cruzado (3)

Hacer una llamada AJAX entre dominios

Su servicio web debe admitir la inyección de método para realizar JSONP.

Su código parece correcto y debería funcionar si sus servicios web y su aplicación web están alojados en el mismo dominio.

Cuando haces un $ .ajax con dataType: ''jsonp'' significa que jQuery en realidad está agregando un nuevo parámetro a la URL de consulta.

Por ejemplo, si su URL es http://10.211.2.219:8080/SampleWebService/sample.do entonces jQuery agregará? Callback = {some_random_dynamically_generated_method}.

Este método es más bien un proxy adjunto realmente en el objeto ventana. Esto no es nada específico, pero se ve más o menos así:

window.some_random_dynamically_generated_method = function(actualJsonpData) { //here actually has reference to the success function mentioned with $.ajax //so it just calls the success method like this: successCallback(actualJsonData); }

Verifique lo siguiente para obtener más información

http://json-p.org/

Hacer una solicitud JSONP ajax entre dominios con jQuery

Esta pregunta ya tiene una respuesta aquí:

Como usted sabe, la seguridad del navegador web no permite realizar solicitudes de dominios cruzados. Leí un libro que dice que debes usar XMLHTTPRequest solo si puedes poner los archivos en el servidor (es decir, poner la página que cargarás en el mismo dominio solicitado). Si no puede, debe buscar una alternativa.

Mis preguntas son :

  1. ¿Cuál es la alternativa de dominio cruzado a XMLHTTPRequest?
  2. ¿Qué hay de WebSockets ? ¿Esta tecnología permite solicitudes de dominios cruzados?

EDITAR: Todavía no está claro para mí ...

Por ejemplo, retiro mi página de www.domain1.com y necesito solicitar javascript desde www.domain2.com . Entonces, la página extraída debería incluir algo como:

<script src="www.domain2.com/script.js"></script>

para evitar restricciones de dominios cruzados.

Y puedo usar JSONP, y la solicitud se verá así: http://ww.domain1.com/?callback=someFunction.js

Pero: ¿no es lo mismo? ¡Simplemente saqué js de otro dominio! ¿Evita las restricciones de dominios cruzados?


Puede realizar solicitudes de dominio cruzado utilizando el objeto XMLHttpRequest . Esto se hace usando algo llamado "Intercambio de recursos de origen cruzado". Ver: http://en.wikipedia.org/wiki/Cross-origin_resource_sharing

En pocas palabras, cuando se realiza la solicitud al servidor, el servidor puede responder con un encabezado Access-Control-Allow-Origin que permitirá o denegará la solicitud. El navegador debe verificar este encabezado y, si está permitido, continuará con el proceso de solicitud. Si no, el navegador cancelará la solicitud.

Puede encontrar más información y un ejemplo de trabajo aquí: http://www.leggetter.co.uk/2010/03/12/making-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html

JSONP es una solución alternativa, pero se podría argumentar que es un truco.


Si está dispuesto a transmitir algunos datos y no necesita estar protegido (ninguna información pública) puede usar un proxy CORS, es muy fácil, no tendrá que cambiar nada en su código o en el lado del servidor. (especialmente de su servidor no es como la API de Yahoo o OpenWeather). Lo he usado para buscar archivos JSON con XMLHttpRequest y funcionó bien.