如何解决如何取消http请求?
| 我正在尝试使用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);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。