Foros del Web » Programando para Internet » Javascript »

XMLHttpRequest con autorizacion basica

Estas en el tema de XMLHttpRequest con autorizacion basica en el foro de Javascript en Foros del Web. estoy tratando de obtener un feed xml de una fuente con autorizacion y bueno, con php puedo hacerlo bien con algo así Cita: $url='https://gmail.google.com/gmail/feed/atom'; $context ...
  #1 (permalink)  
Antiguo 20/08/2012, 10:29
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
XMLHttpRequest con autorizacion basica

estoy tratando de obtener un feed xml de una fuente con autorizacion y bueno, con php puedo hacerlo bien con algo así


Cita:
$url='https://gmail.google.com/gmail/feed/atom';
$context = stream_context_create(array(
'http' => array(
'header' => "Authorization: Basic " . base64_encode("usuario:contraseña")
)
));
$data = file_get_contents($url, false, $context);
$sxml=simplexml_load_string($data);
el caso es que en javascript se me resiste, no se como mandar las cabeceras correctamente

he probado con algo tal que asi
Cita:
xmlHttp=new XMLHttpRequest();

xmlHttp.open("GET","https://gmail.google.com/gmail/feed/atom", false);
xmlHttp.setRequestHeader("Authorization Basic","usuario:contraseña");
xmlHttp.send();
var respuestaXml = xmlHttp.responseText;
document.getElementById('txt').innerHTML=respuesta Xml;
si lo pruebo asi salta el error
Uncaught Error: SYNTAX_ERR: DOM Exception 12

y sustituyendo "usuario:contraseña" por el valor correspondiente codificado en base 64 pero son todo errores y problemas

¿alguien tiene una sugerencia de como deberia mandar las cabeceras con javascript puro?


edito

y si pruebo con xmlHttp.open("GET","https://usuartio:contraseñ[email protected]/gmail/feed/atom", false);

o con xmlHttp.open("GET","https://google.com/gmail/feed/atom", false,'usuario','contraseña');
o con lo mismo pero con el usuario y la contraseña en base 64
me salta el error
Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101

Última edición por juanito1712; 20/08/2012 a las 10:37
  #2 (permalink)  
Antiguo 20/08/2012, 10:43
3nr1c
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: XMLHttpRequest con autorizacion basica

En este link hablan de la cabecera Authorization, creo que es lo que necesitas:
http://coderseye.com/2007/how-to-do-...h-in-ajax.html

Un saludo
  #3 (permalink)  
Antiguo 20/08/2012, 13:24
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
Respuesta: XMLHttpRequest con autorizacion basica

gracias por la ayuda pero aun con esas sigo en el error 101
  #4 (permalink)  
Antiguo 20/08/2012, 14:04
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: XMLHttpRequest con autorizacion basica

buenas,
creo que la forma correcta vendría siendo con los parámetros adicionales en el método XMLHttpRequest.open. en todo caso, el error DOM Exception 12 se debe a que estabas creando un patrón incorrecto para el header Authorization Basic. nótese que luego no te vuelve aparecer el mismo error; ahora es NETWORK_ERR el cual sucede porque con XMLHttpRequest no se puede hacer cross-request a no ser que el navegador sea capaz y que el servidor al que se intenta hacer la petición tenga los permisos.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 20/08/2012, 16:45
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
Respuesta: XMLHttpRequest con autorizacion basica

la verdad es que me extraña un poco que no permitan acceder a un feed, si puedo acceder al feed desde php deberia tambien poder acceder desde javascript?
  #6 (permalink)  
Antiguo 20/08/2012, 17:08
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: XMLHttpRequest con autorizacion basica

no, no es lo mismo puesto que cada entorno tiene sus propias normas y restrincciones. en javascript, como medida de seguridad, ningún script puede tener acceso a dominios ajenos. es decir, desde site.com no se puede accesar a site.us porque son dominios distintos. es una restrincción que naturalmente ya viene aplicado a javascript y no se puede configurar. para más información puedes leer acerca de la politica del mismo origen. en cambio, en php tienes la posibilidad de permitirlo o prohibirlo.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 20/08/2012, 18:17
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
Respuesta: XMLHttpRequest con autorizacion basica

el caso es que si intento acceder al feed de musicbrainz.org si que me es posible :S y obtengo el xml perfectamente desde javascript
  #8 (permalink)  
Antiguo 20/08/2012, 19:41
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: XMLHttpRequest con autorizacion basica

¿puedo ver el código de ejemplo de ese caso particular? si es por XHR, entonces quizas el servidor permite el cross-site request. para que sea posible este método, el servidor externo debe declarar el header Access-Control-Allow-Origin indicando las URLs con permisos de acceso o un asterisco para permitir cualquier URL. otro método por XHR no conozco. las otras técnicas se basan mediante peticiones de recursos, por ejemplo un JSONP es un script js que tiene la información formateado a JSON el cual se carga creando un elemento SCRIPT. luego con un callback se procesa dicha información.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: html, php, xmlhttprequest, basicos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:45.