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.

  • Obteniendo XMLHttpRequest Progress desde PHP Script
  • ¿Por qué veo un error de "origen no permitido por Access-Control-Allow-Origin" aquí?
  • ¿Cuál es la mejor manera de volver a intentar una request AJAX en caso de error utilizando jQuery?
  • ¿Cómo agregar datos de encabezado en XMLHttpRequest cuando se usa formdata?
  • Acceso al código de estado http desde Ext.data.Store
  • WebSockets vs XHR para grandes cantidades de datos
  • ¿Forzar XMLSerializer para no queuepsar las tags vacías?
  • IE10 / IE11 cancela la request Ajax después de borrar el caching con el error "Error de networking 0x2ef3"
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.