用cookie在本地传输数据

最近在研究如何测试网页的加载速度,发现了一个html5有一个叫performance的类可以获取诸如网络延迟,页面加载以及onload event处理时间等信息。

为了使测试能够自动化,我需要在用javascript获取这些信息之后用其他工具把他记录下来,一般来说,获取javascript脚本里面的数据可以使用XHR技术将数据发送到服务器上面去,但是我不想自己搭建一个webserver。一个比较简单的办法就是把这些信息用cookie的形式记录下来,然后在其他程序读取cookie信息即可。

以下是Javascript操作cookie的代码:

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 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 null;

}

 

function eraseCookie(name)

{

  createCookie(name, "", -1);

}

 

  

IE下读取cookie用wininet API中的InternetGetCookie即可。需要注意的是第一个参数lpszUrl。我做测试的时候是在本机上面写了一个 html页面,在这个页面里面用javascript设置了cookie。从ie临时文件夹可以看到,cookie文件的名字叫cookie:zhijun.peizj@~~local~~/。其他的网站的cookie文件名叫cookie:zhijun.peizj@163.com/。 如下图所示:

所以我猜测这个url参数应该使用~~local~~, 但是发现函数调用失败,返回值是12006,也就是ERROR_INTERNET_UNRECOGNIZED_SCHEME。尝试使用了local, 127.0.0.1都无效。后来发现这篇文章http://www.cnblogs.com/huqingyu/archive/2008/11/27/1342256.html, 知道需要加上http头,于是试过http:// ~~local~~, http://local, http://local.com, http://127.0.0.1 都发现无效。最后再次读上面那篇文章,发现下面有一个微软的员工的回答:that the URL field is the url that the user navigates to when browsing to a site. 于是想起再次用ie去打开那个html文件,发现地址栏是file:///C:/Users/zhijun.peizj/Desktop/performance.html。 重新使用file:///作为URL,发现函数调用成功!

 

webkit下面则没有API可以使用,就chrome浏览器来说,cookie是记录在一个cookies的文件里面,里面是一个sqlite的数据库,所以要想拿到cookie,可以直接读这个数据库。正常的地址在 C:\Users\%username%\AppData\Local\Google\Chrome\User Data\Default\Cookies

posted @ 2012-07-25 14:44  皮皮鲁.  阅读(1101)  评论(0编辑  收藏  举报