使用Mozilla插件计算仅HTTP cookie
Count HTTP only cookies with Mozilla add-on
我正在尝试开发一个Firefox插件。我想数一下标记为仅HTTP的cookie。在手动检查时,我看到许多网站都有不止一个仅HTTP的cookie。但是,我的结果总是0
或1
。我的错在哪里?
这是我的代码:
var {Cc, Ci, Cu} = require("chrome");
Cu.import("resource://gre/modules/Services.jsm");
var cookieManager = Cc["@mozilla.org/cookiemanager;1"].getService(Ci.nsICookieManager2);
var tabs = require("sdk/tabs");
tabs.on('load', function(tab) {
var URL = tab.url;
var url = require("sdk/url").URL(URL);
var host = url.host;
function getCookies(host){
var cookies = cookieManager.getCookiesFromHost(host);
var count = 0;
while (cookies.hasMoreElements()){
var cookie = cookies.getNext().QueryInterface(Ci.nsICookie2);
//var count = 0;
var httpCookie = cookie.isHttpOnly;
if(httpCookie){
return count=count+1 ;
}else{
return 0;
}
console.log("Cookie host: " + cookie.host + "; Cookie Name :" + cookie.name
+ " = Cookie value:" + cookie.value + "'n");
dump("'tCookie host: " + cookie.host + " Is Domain cookie: " +cookie.isDomain
+ "; Cookie Name :" + cookie.name +" = Cookie value:" + cookie.value
+ "; Is Session Cookie :" + cookie.isSession
+ "; Expiry time :" + cookie.expiry
+ "; It is an Http only cookie :" + cookie.isHttpOnly + "'n");
}
return count;
}
var getResult = getCookies(host);
console.log("Http Cookies: " + getResult);
});
在您的function getCookies(host)
中,您有一个while
循环,用于循环通过指定host
的所有cookie。但是,该循环的内部只执行一次。
在这个循环中,您有一个if
语句:
var httpCookie = cookie.isHttpOnly;
if(httpCookie){
return count=count+1 ;
}else{
return 0;
}
此语句导致函数立即返回1
或0
,具体取决于找到的第一个cookie的属性cookie.isHttpOnly
是true
还是false
。[注意:当第一次也是唯一一次执行此if
语句时,cookie
始终是0
。]除了第一个cookie之外,不会检查其他cookie,因为您会立即return
值。函数的执行结束于该if
语句中的两个return
语句中的任何一个。if
之后的函数内的行将不会执行。
根据你的描述,你的if
声明最好是:
if(cookie.isHttpOnly){
count++;
}
注意:假设您只使用cookie.isHttpOnly
一次,则无需将其分配给单独的变量。
相关文章:
- Angular无法读取http post响应中的cookie
- 无法从JavaScript访问cookie,但在HTTP标头上可见
- 在Angular模板中使用http cookie值
- 从Windows8JS应用程序获取仅HTTP cookie
- 从浏览器发出HTTP请求,而不在请求标头中发送任何cookie
- 无法在 Heroku 中访问 http 上的 cookie,只能访问 https
- 在 JavaScript 中的 HTTP POST 请求中发送 cookie
- 只有http的cookie安全吗?
- 访问HTTPS页面上的HTTP以获取Cookie
- 访问'设置Cookie'$http中的标头
- 如何通过NodeJS发送带有cookie的HTTP请求
- 在Liferay中添加非仅http cookie
- xss是否可以通过分析头来访问仅http cookie
- Android HTTP GET cookie / javascript issue?
- 如何将一个安全的、仅限http的cookie作为承载令牌呈现(不使用Angular.JS)
- 如何在http请求中设置cookie
- 寻找一个独立的库来处理Javascript中的个人容器上的HTTP cookie
- 是否可以在JavaScript中从HTTP响应头获取Set-Cookie值?
- 使用Mozilla插件计算仅HTTP cookie
- 我可以用Javascript检查HTTP cookie的存在吗?