Búsqueda de sitios web

Javascript y https - objeto XMLHttpRequest para obtener una ruta relativa - ¿se 'hereda' el protocolo/puerto?


Si utilizo rutas relativas en Javascript para OBTENER una página de un servidor (para mostrar el resultado dentro de un div), ¿Javascript utiliza el mismo protocolo/puerto que la página en la que se cargó?

Por ejemplo:

se solicita la página principal https://www.foo.com/bar.php

Código JS en bar.php:

var turl = "/new_dir/index.php?r="+r;
if(window.XMLHttpRequest){  
    xmlhttp=new XMLHttpRequest();
}else{
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET",turl,false);
xmlhttp.send(null);

Dado que se solicitó y sirvió la página principal usando https en el puerto 443, ¿significa esto que JS enviará la solicitud GET a la nueva página usando el mismo protocolo y puerto? ¿O enviará la solicitud a través de http en el puerto 80, ya que no especifiqué un protocolo de conexión en la variable 'turl'?

Respuesta #1

Usará el mismo puerto y protocolo, ya que no has especificado nada más. Tu URL es una referencia relativa en términos del RFC, detalles en la Sección 4.2 del RFC. (Solo sé la referencia de la sección del RFC porque recientemente descubrí este ingenioso truco para cosas de http/https.)

Entonces tu solicitud de

/new_dir/index.php?r=blah

relativo al documento

http://www.foo.com/bar.php

resuelve en

http://www.foo.com/new_dir/index.php?r=blah