XMLHttpRequest para get respuesta HTTP del host remoto

¿Por qué el siguiente código basado en el ejemplo de Mozilla no funciona? Intento con Firefox 3.5.7 y Chrome.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> </head> <body> </body> <script> var req = new XMLHttpRequest(); req.open('GET', 'http://www.mozilla.org/', false); req.send(); if(req.status == 200) { alert(req.responseText); } </script> </html> 

Tenga en count que el browser está extrayendo el html del disco local (file: /// C: /Users/Maxim%20Veksler/Desktop/XMLHTTP.html)

En Firefox da el siguiente error:

 uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.send]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: file:///C:/Users/Maxim%20Veksler/Desktop/XMLHTTP.html :: <TOP_LEVEL> :: line 10" data: no] 

¿Qué estoy haciendo mal? Deseo enviar una request al host remoto y alertar el resultado (más tarde para agregarlo a un div).

4 Solutions collect form web for “XMLHttpRequest para get respuesta HTTP del host remoto”

Su browser está impidiendo la creación de scripts entre sitios . Debe usar una ruta relativa, de lo contrario, la mayoría de los browseres simplemente devolverán un error o un text de respuesta vacío.

La siguiente publicación de Stack Overflow probablemente también esté relacionada con su problema:

  • Texto de respuesta vacío de XMLHttpRequest .

También estoy asumiendo que ha abierto su página de testing HTML directamente en el browser a juzgar por su reference al file:///... Para las llamadas XMLHttpRequest , debe servir el HTML desde un server. Pruebe algo como xampp ( http://www.apachefriends.org/en/xampp.html ) para iniciar y ejecutar un server local y luego ejecute la testing desde http://localhost/XMLHTTP.html .

Tenga en count que esto no resuelve el problema del mismo origen, pero esto permitiría que el siguiente código funcione:

  <script> var req = new XMLHttpRequest(); req.open('GET', '/myTestResponse.html', false); req.send(); if(req.status == 200) { alert(req.responseText); } </script> 

No puede realizar requestes entre dominios, incluso con files locales.

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

A less que esté desarrollando una extensión, que no tiene las mismas restricciones que una página web.

Problema de security no?

Presumiblemente, ¿Firefox impide que el file local hable con un host remoto?

Explorando alnetworkingedor de la networking – encontré esto. Intenta agregar esto al comienzo de tu script:

 try { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); } catch (e) { alert("Permission UniversalBrowserRead denied."); } 

No puedo garantizar que esto funcione; porque, en última instancia, lo que intenta hacer es introducir un agujero de security que los browseres hayan codificado específicamente para que se hayan tapado (requestes entre dominios).

Sin embargo, hay algunos escenarios especiales en los que se puede encender, generalmente a discreción del usuario.

  • XHR Progress Only Firing Once
  • ¿Xmlhttprequest mantiene la connection abierta después de que se haya procesado la request?
  • jQuery.ajax () error con textStatus = error
  • ¿Cómo cargo los datos de image binarys usando Javascript y XMLHttpRequest?
  • XHR / setTimeout / Protable no termina hasta que el desplazamiento se detiene en Chrome
  • ¿Un sistema de logging frontend JavaScript que se conecta a nuestro back-end?
  • FormData en IE8 / 9
  • ¿Por qué veo un error de "origen no permitido por Access-Control-Allow-Origin" aquí?
  • jQuery 1.5 solo envía requestes GET en el método ajax
  • ¿Hay alguna manera de no enviar cookies cuando se hace un XMLHttpRequest en el mismo origen?
  • Cómo upload un file usando jQuery.ajax y FormData
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.