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

发布于 2021-01-31 17:40:46

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,禁止更改标头(在这种情况下)。

关注者
0
被浏览
107
1 个回答
  • 面试哥
    面试哥 2021-01-31
    为面试而生,有面试问题,就找面试哥。

    我不确定您对代码有多少访问权,但是您可以重写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



推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看