Javascript 如何取消http请求?
我尝试使用Javascript 如何取消http请求?,javascript,firefox,firefox-addon,Javascript,Firefox,Firefox Addon,我尝试使用asobject.cancel(Components.results.NS\u BINDING\u successed)取消HTTP请求但它不起作用。代码如下所示。谁能纠正一下吗 function(aSubject, aTopic, aData) { if ("http-on-modify-request" == aTopic) { //get the http request url var url = aSubject.Que
asobject.cancel(Components.results.NS\u BINDING\u successed)取消HTTP请求代码>但它不起作用。代码如下所示。谁能纠正一下吗
function(aSubject, aTopic, aData)
{
if ("http-on-modify-request" == aTopic)
{
//get the http request url
var url = aSubject.QueryInterface(Components.interfaces.nsIHttpChannel).originalURI.spec;
//get the referer of http request (this error gives an error; dont know why :(
var a = aSubject.QueryInterface(Components.interfaces.nsIHttpChannel).getRequestHeader("referer");
//Cancel http request from other domains
if (url.split('//')[1].split('/')[0] != a.split('//')[1].split('/')[0])
{
//the code below don't work! Someone please correct it.
//code to cancel http request
aSubject.cancel(Components.results.NS_BINDING_SUCCEEDED);
}
}
}
这可能是因为NS_BINDING_successed不是错误代码(是的,文档似乎是错误的)。您实际想要使用的是组件.results.NS\u绑定\u中止
顺便说一下,您似乎在比较URL中的主机名。考虑到您已经有一个NSURI对象,这可以更容易地完成:
var requestHost = aSubject.QueryInterface(Components.interfaces.nsIHttpChannel).originalURI.host;
var referrerHost = aSubject.QueryInterface(Components.interfaces.nsIHttpChannel).referrer.host;
if (requestHost != referrerHost)
{
aSubject.cancel(Components.results.NS_BINDING_ABORTED);
}
这不就是你以前问的问题吗?是的,几乎一样。但问题是前面的代码和上面的代码都不会阻止http请求。所以,我想更正上面的代码。非常感谢。