在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,禁止更改标题(在本例中)。
答案 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。