【问题标题】:How to get the URL of a xmlhttp request (AJAX)如何获取 xmlhttp 请求的 URL (AJAX)
【发布时间】:2014-01-12 01:30:14
【问题描述】:

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

我试图将该 URL 放入警报中,因此我尝试使用 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 而禁止更改标题(在这种情况下)。

【问题讨论】:

标签: javascript jquery ajax get http-headers


【解决方案1】:

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

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

【讨论】:

  • 在我的项目中,我不知道传出 URL,如果我知道我就不必获取它...
  • @Youss,你如何将传出的URL 传递给XMLHTTPRequest 对象?
  • 我没有传递任何东西,我正在抓取进行 AJAX 调用的网站。所以我需要获取这些传出 URL 的
  • @Youss,我进行了编辑,可能/可能不适合您的需求。
  • 非常感谢您的时间和精力:) 我不知道这是否适用于“所有 AJAX 调用”,但至少它是一个很好的起点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多