Javascript& https - GET相对路径的XMLHttpRequest对象 - 协议/端口'继承'?

时间:2011-02-03 15:49:33

标签: javascript https xmlhttprequest

如果我在Javascript中使用相对路径从服务器获取页面(在div中显示输出),Javascript是否使用与加载页面相同的协议/端口?

例如:

请求父页面https://www.foo.com/bar.php

bar.php上的JS代码:

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);

由于在端口443上使用https请求和提供父页面,这是否意味着JS将使用相同的协议和端口将GET请求发送到新页面?或者它会在端口80上通过http发送请求,因为我没有在'turl'变量中指定连接协议吗?

1 个答案:

答案 0 :(得分:6)

它将使用相同的端口和协议,因为您尚未指定任何其他内容。您的网址是RFC-speak中的相对参考,详情请参见Section 4.2 of the RFC。 (我只是碰巧知道RFC部分参考,因为我最近发现了关于http / https的this nifty trick内容。)

所以你的要求

/new_dir/index.php?r=blah

相对于文件

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

解析为

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