如何获取xmlhttp请求的URL(AJAX)

时间:2013-12-23 19:45:25

标签: javascript jquery ajax get http-headers

w3schools.com(url)上有一个如何使用普通Javascript进行AJAX调用的示例。如果您查看示例,您将看到通过按钮触发呼叫:

<button type="button" onclick="loadXMLDoc()">Change Content</button>

这是功能:

function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
}

我想要的是获取传出的AJAX调用的URL ajax_info.txt(url):

xmlhttp.open("GET","ajax_info.txt",true);

我试图将该网址设置为警告,因此我尝试使用getAllResponseHeaders()调用响应的标头,希望它会像Host那样给我:

if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    alert(xmlhttp.getAllResponseHeaders());

它确实给了我所有的标题但不是主机。所以我的下一步是尝试使用setRequestHeader()自己设置主机,但后来我意识到标头需要一个我必须自己发送的值,所以这不起作用。我还可以尝试在警报中获取/获取传出的AJAX URL吗?

请注意代码只是一个示例,我知道由于Access-Control-Allow-Origin,禁止更改标题(在本例中)。

1 个答案:

答案 0 :(得分:3)

我不确定您对代码有多少访问权限,但您可以覆盖XMLHttpRequest.open并将网址挂钩。

XMLHttpRequest.prototype.open = (function(open) {
  return function(method,url,async) {
      console.log('the outgoing url is ',url);
      open.apply(this,arguments);
    };
})(XMLHttpRequest.prototype.open);

这是FIDDLE