Necesito enviar una solicitud AJAX a, por ejemplo, el puerto 8080 donde se está ejecutando un daemon.¿Cómo envío una solicitud AJAX en un puerto diferente con jQuery?
Respuesta
No se puede POST
información de dominio cruzado, subdominio o número de puerto. Sin embargo, puede utilizar JSONP si tiene acceso tanto al daemon como al del sitio solicitante. Si los datos deben ser devueltos, entonces el daemon
necesita soportar un parámetro de consulta callback
y devolverlo con el formato correcto.
pasar la información al demonio:
$.getJSON('http://domain.com:8080/url/here?callback=?', {
key: 'value',
otherKey: 'otherValue'
}, function(data){
// Handles the callback when the data returns
});
Ahora acaba de asegurarse de que su demonio gestiona el parámetro callback
. Por ejemplo, si callback=mycallback
el retorno desde el demonio (la única cosa por escrito a la página) debería tener este aspecto:
Por un pares clave/valor:
mycallback({'returnkey':'returnvalue', 'other':'data' });
para una matriz:
mycallback([1,2,3]);
Si no tiene implementado un JSONP o mecanismo similar, no puede comunicar dominios cruzados mediante jQuery.
Esto rompe el Same origin policy. No puede usar un puerto diferente, incluso cuando usa el mismo dominio.
Puede utilizar JSONP como Doug sugerido.
O bien, como otra solución posible, puede configurar un muy simple reverse proxy (usando mod_proxy si está en Apache). Esto le permitiría usar rutas relativas en su solicitud AJAX, mientras que el servidor HTTP actuaría como un proxy para cualquier ubicación "remota".
La directiva de configuración fundamental para configurar un proxy inverso en mod_proxy es ProxyPass. Lo más habitual es utilizar la siguiente manera:
ProxyPass /ajax/ http://www.localhost:8080/
En este caso, se debe solicitar /ajax/test.xml
con jQuery, pero, de hecho, el servidor podría servir a esta actuando como un proxy para http://www.localhost:8080/test.xml
internamente.
Si está utilizando IIS, es posible que desee utilizar el Managed Fusion URL Rewriter and Reverse Proxy para configurar un proxy inverso.
+1 Para una respuesta fantástica. Respondí la respuesta escrita de "bla, bla, bla" y proporcionaste una solución muy viable. Gracias Daniel! –
Oh, el proxy provocará un procesamiento adicional en el lado del servidor. Así que elegiré jsonP – user198729
. Estuve buscando todo el día intentando averiguar por qué no podía publicar datos en todos los puertos antes de encontrar esto. Gracias hombre. – screenm0nkey
Esto cuenta como un origen diferente, aunque lo tenga en la misma caja, solo un puerto diferente.
Si se dirige principalmente navegadores nuevos como FireFox 3.5 y superior, puede intentar agregar encabezados Access-Control
a su aplicación en otro puerto y permitir la llamada desde su grupo de aplicaciones predeterminado. Información sobre los encabezados de control de acceso se puede encontrar aquí: https://developer.mozilla.org/en/HTTP_access_control
IE también lo implementa (de nuevo, en el uso de un control ActiveX diferente, ¿por qué?): http://blogs.msdn.com/ie/archive/2009/01/14/completing-access-control-support-for-xdomainrequest.aspx y http://msdn.microsoft.com/en-us/library/cc288060(VS.85).aspx
- 1. jQuery Ajax Solicitud dentro de Ajax Solicitud
- 2. Anula la solicitud JEAP ajax con jQuery
- 3. ¿Cómo debo depurar una solicitud jQuery Ajax?
- 4. Solicitud JSON con JQuery/Ajax con Spring
- 5. enviar un formulario ajax jQuery con dos botones de envío
- 6. solicitud POST jQuery (no AJAX)
- 7. Levante - Autocompletar con Ajax Envío
- 8. ¿Cómo envío una solicitud POST en RestSharp?
- 9. Cómo espiar la solicitud jQuery AJAX?
- 10. Cómo cancelar/abortar la solicitud jQuery AJAX?
- 11. ¿Puedo usar XMLHttpRequest en un puerto diferente de un archivo de script cargado desde ese puerto?
- 12. ¿Cómo envío un formulario en jQuery async?
- 13. solicitud jQuery AJAX que falla en IE
- 14. Envío con comillas simples usando jQuery, Ajax y JSON
- 15. Solicitud de Ajax en curso jQuery
- 16. ¿Configurando una cookie en una solicitud AJAX?
- 17. Envío de varios parámetros de datos con jQuery AJAX
- 18. jQuery Ajax - Estableciendo processData en falsos cortes mi solicitud AJAX
- 19. Solicitud de envío de envío a RESTful WCF con json
- 20. Cómo devolver una función en 404 en JSON Solicitud de ajax con jQuery?
- 21. Pasar encabezados de solicitud en una llamada jQuery AJAX GET
- 22. Diferente entre dwr y jquery ajax?
- 23. Solicitud de jquery ajax, esperar la última solicitud para terminar
- 24. no-AJAX solicitud de POSTE de jquery
- 25. JQuery Ajax Solicitud: cambio de usuario-agente
- 26. Jquery ajax solicitud de publicación no funciona
- 27. Intentando agregar demora a jQuery Solicitud AJAX
- 28. Respuesta múltiple Solicitud AJAX
- 29. Cómo iniciar WEBrick en un puerto diferente de 3000
- 30. Comprobar el estado de una solicitud jQuery ajax
¿Hay una manera general, para reemplazar 'dominio. com'? De esta manera solo puede funcionar en producción, porque uso 'localhost' en un entorno en desarrollo. – user198729
Debería poder usar ''http: //' + window.location.hostname + ': 8080/url'' para compilar la URL que funcionará localmente y en línea. –