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

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

 

这是function:

 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()设置主机,但后来我意识到Header需要一个我必须自己发送的值,所以这不起作用。 我还可以尝试在警报中获取/获取传出的AJAX URL吗?

请注意代码只是一个例子,我知道由于Access-Control-Allow-Origin,禁止更改标题(在这种情况下)。

我不确定您对代码有多少访问权限,但您可以覆盖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 。