example - enable cross origin javascript
problema ajax-200 OK en Firebug pero mensaje rojo sin cuerpo de respuesta (6)
El estado 200 reportado en Firebug no indica la validez de la llamada ajax de dominios cruzados, ya sea que tenga éxito o no.
Es posible que desee intentar usar un método proxy para realizar la llamada.
Por ejemplo, JavaScript: utilice un proxy web para llamadas entre dominios XMLHttpRequest
Tengo un pequeño problema ajax relacionado con el dominio cruzado tal como lo veo.
En localmachine, creé un ejemplo html con algunos ajax: en el campo de texto de registro ''usuario'', con cada pulsación ajax lo envía al Tomcat local, donde el servlet comprueba si ese nombre de usuario ya está usado y devuelve la respuesta ''tomada''.
Ningún problema en localhost en absoluto. Tan pronto como escribo el servlet ''username'' usado, envio una respuesta ''tomada'' y el navegador la muestra.
Pero cuando pongo la página html de prueba con ajax en una máquina remota (algo de hosting gratuito en la red remota) que envía solicitud de validación en mi localhost Tomcat, la conexión se realiza, en la consola Tomcat veo solicitudes y en Firefox en Mozzila esto es Console salida:
GET http://89.216.182.25:8080/Dinamicki1/UsernameServlet?username=zik 200 OK
... pero en la pestaña de respuesta no hay respuesta de servlet ''tomada'' y el mensaje en firebug está en color rojo
Entonces los servidores se comunican bien, no hay problemas de firewall, la respuesta es 200 OK
Pero el cuerpo de respuesta está vacío.
¿Alguna idea de lo que son estos mensajes rojos en Firebugs?
Muchas gracias por adelantado.
Y si alguien puede recomendar un tutorial ajax serio para Java, será muy apreciado :)
Necesita usar una URL relativa al dominio en su solicitud de Ajax:
/Dinamicki1/UsernameServlet?username=zik
O una URL relativa al contexto (suponiendo que la página se sirve desde /Dinamicki1
):
UsernameServlet?username=zik
Con respecto a "Ajax tutorial para Java", bueno, en realidad no es uno. Esas son solo dos tecnologías separadas. Sin embargo, recomiendo comenzar con jQuery (para el lado del cliente) y Google Gson (para el lado del servidor) y JSON (como el lenguaje de comunicación entre el cliente y el servidor).
No puede usar AJAX para leer respuestas de otros dominios.
Su HTML debe estar en el mismo servidor (y el mismo dominio, puerto y protocolo) que el servlet AJAX.
Descubrí cómo resolverlo desde este sitio :
"Para permitir la exploración de directorios a través de Apache Tomcat, cambie el parámetro" listings "en el archivo conf / web.xml de falso a verdadero".
Llame a su página no como
C:/Documents and Settings/.../page.html
sino comolocalhost:8080/your_servlet_name
(la página se llama mejorindex.html
).
De esta forma, podrá realizar solicitudes AJAX a localhost:8080/your_servlet_name/something_else
.
¡Una solución que funcionó para mí fue que tuve que agregar "www" a la url! Estaba usando URL Rewrite, así que cada URL que tenía (image, js, get, load, post), necesitaba usar la url completa, ¡pero faltaba "www"!
Para mí, fue una solicitud web api (c # .NET) y cors no se habilitó. Se agregó un encabezado para cors en el controlador y se solucionó el problema.
[EnableCors(origins: "*", headers: "*", methods: "*")]