从Firefox扩展程序(XUL)读取网页Cookie [英] Reading web-page cookies from a Firefox extension (XUL)

查看:98
本文介绍了从Firefox扩展程序(XUL)读取网页Cookie的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在为Firefox浏览器创建扩展程序。我想读一个由HTML页面使用JavaScript在XUL文件中设置的cookie。可能吗?



我尝试使用 document.cookie ,但它不工作:

  function readCookie(name){
var ca = document.cookie.split(';');
var nameEQ = name +=;
for(var i = 0; i var c = ca [i];
while(c.charAt(0)=='')c = c.substring(1,c.length); // delete spaces
if(c.indexOf(nameEQ)== 0)return c.substring(nameEQ.length,c.length);
}
return;
}

函数createCookie(name,value,days){
if(days){
var date = new Date();
date.setTime(date.getTime()+(days * 24 * 60 * 60 * 1000));
var expires =; expires =+ date.toGMTString();
}
else var expires =;
document.cookie = name +=+ value + expires +; path = /;
}

function eraseCookie(name){
createCookie(name,,-1);
}

你能帮我吗?提前感谢。

解决方案

这些代码段可能有助于

  ///通过这种方法,你可以通过它的名称或值来遍历每个cookie ... 

function ReadCookie()
{
var cookieMgr = Components.classes [@ mozilla.org/cookiemanager;1]
.getService(Components.interfaces.nsICookieManager);

for(var e = cookieMgr.enumerator; e.hasMoreElements();){
var cookie = e.getNext()。QueryInterface(Components.interfaces.nsICookie);
dump(cookie.host +;+ cookie.name +=+ cookie.value +\\\
);

///您的代码在这里检查您的cookie或您的实现...
///您可以使用cookie名称或值来选择您的cookie ...

}
}

///如果您想按域名你可以使用这个代码...

  function GetCookie(){
try
{
alert(Getting Cookies);
var ios = Components.classes [@ mozilla.org/network/io-service;1]
.getService(Components.interfaces.nsIIOService);
var uri = ios.newURI(http://www.yoursite.com/,null,null);

var cookieSvc =
Components.classes [@ mozilla.org/cookieService;1]
.getService(Components.interfaces.nsICookieService);
var cookie = cookieSvc.getCookieString(uri,null);

///您的逻辑在这里...
}
catch(errorInfo)
{
alert(errorInfo);
}

}

希望这些将有助于: / p>

I'm creating an extension for the Firefox browser. I would like to read a cookie which was set by an HTML page using JavaScript in the XUL file. Is it possible?

I tried using document.cookie, but it doesn't work:

function readCookie(name) {
  var ca = document.cookie.split(';');
  var nameEQ = name + "=";
  for(var i=0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1, c.length); //delete spaces
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
  return "";
}

function createCookie(name, value, days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
    }
  else var expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function eraseCookie(name) {
  createCookie(name, "", -1);
}

Could you help me? Thanks in advance.

解决方案

These code snippets may help

///By this method you can iterate throug each cookie by its name or value... 

function ReadCookie()   
{
var cookieMgr = Components.classes["@mozilla.org/cookiemanager;1"]
         .getService(Components.interfaces.nsICookieManager);

for (var e = cookieMgr.enumerator; e.hasMoreElements();) {
 var cookie = e.getNext().QueryInterface(Components.interfaces.nsICookie); 
  dump(cookie.host + ";" + cookie.name + "=" + cookie.value + "\n");

 ///Your code here to check your cookie or your implementation...
 ///You can use cookie name or value to select your cookie...

}
}

///If you want to read cookies by domain name you can use this code...

function GetCookie(){
try
{
alert("Getting Cookies");
    var ios = Components.classes["@mozilla.org/network/io-service;1"]
            .getService(Components.interfaces.nsIIOService);
var uri = ios.newURI("http://www.yoursite.com/", null, null);

var cookieSvc =
   Components.classes["@mozilla.org/cookieService;1"]
             .getService(Components.interfaces.nsICookieService);
var cookie = cookieSvc.getCookieString(uri, null);

///Your logic here...
}
catch (errorInfo)
{
    alert(errorInfo);
}

}

Hope these will help :)

这篇关于从Firefox扩展程序(XUL)读取网页Cookie的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆