gpt4 book ai didi

javascript - 如何取消http请求?

转载 作者:行者123 更新时间:2023-11-29 15:03:38 24 4
gpt4 key购买 nike

我尝试使用 aSubject.cancel(Components.results.NS_BINDING_SUCCEEDED); 取消 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_SUCCEEDED 不是错误代码(是的,文档似乎是错误的)。您实际想要使用的是 Components.results.NS_BINDING_ABORTED

顺便说一句,您似乎在比较 URL 中的主机名。鉴于您已经有一个 nsIURI 对象,这可以更容易地完成:

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

关于javascript - 如何取消http请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6177990/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com