详细介绍HTTP Cookie

转载  更新时间:2018年05月25日 10:44:04   作者:sanlo   我要评论

本篇文章主要介绍了详细介绍HTTP Cookie,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie和持久Cookie。

Cookie相关的Http头

有 两个Http头部和Cookie有关:Set-Cookie和Cookie。

Set-Cookie由服务器发送,它包含在响应请求的头部中。它用于在客户端创建一个Cookie

Cookie头由客户端发送,包含在HTTP请求的头部中。注意,只有cookie的domain和path与请求的URL匹配才会发送这个cookie。

Set-Cookie Header

Set-Cookie响应头的格式如下所示:

 Set-Cookie: <name>=<value>[; <name>=<value>]...

     [; expires=<date>][; domain=<domain_name>]

     [; path=<some_path>][; secure][; httponly]

expires=<date>: 设置cookie的有效期,如果cookie超过date所表示的日期时,cookie将失效。

 如果没有设置这个选项,那么cookie将在浏览器关闭时失效。

注意:date是格林威治时间(GMT),使用如下格式表示:DAY, DD MMM YYYY HH:MM:SS GMT

DAY
  The day of the week (Sun, Mon, Tue, Wed, Thu, Fri, Sat).
DD
  The day in the month (such as 01 for the first day of the month).
MMM
  The three-letter abbreviation for the month (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec).
YYYY
  year.
HH
  The hour value in military time (22 would be 10:00 P.M., for example).
MM
 The minute value.
SS
 The second value.
domain=<domain_name> : 
path=<some_path>:

注:临时cookie(没有expires参数的cookie)不能带有domain选项。

当客户端发送一个http请求时,会将有效的cookie一起发送给服务器。

如果一个cookie的domain和path参数和URL匹配,那么这个cookie就是有效的。

一个URL中包含有domain和path,可以参考//www.jb51.net/w3school/html/html_url.htm

 secure   : 表示cookie只能被发送到http服务器。

httponly : 表示cookie不能被客户端脚本获取到。

在程序中生成expires

C的方式

time_t curTime = time(NULL);
tm * gmTime = gmtime(&curTime);
char strExperis[50];
strftime(strTimeBuf, 100, " %a, %d %b %Y %X GMT;", gmTime);

JavaScript的方式

var d = new Date();
var expires = d.toGMTString();

Windows中的InternetSetCookie

在Windows中我们可以使用InternetSetCookie来设置Cookie,假如说,A和B两个进程使用Cookie通信,那么会有如下几种情况:

 > A写Global Cookie,B写Session Cookie,此时,A中无法获取Cookie

 > A写Session Cookie,B写Session Cookie,此时,A与B中的Cookie互不影响

 > A写Session Cookie,B写Global Cookie,此时A中的Cookie被Global Cookie覆盖,它们共享一份Global Cookie

注:这种情况的后果下,如果有任意一个进程再写Session Cookie,那么其他进程将获取不到Cookie

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 编程界主流脚本编程语言的比较和选择

    编程界主流脚本编程语言的比较和选择

    这篇文章主要介绍了编程界主流脚本编程语言的比较和选择,本文分析了Unix/Linux Shell、Python/Jython、Ruby/JRuby、Perl、Groovy等脚本语言的优缺点,帮助您快速了解各大语言,需要的朋友可以参考下
    2015-05-05
  • Android 微信文件传输助手文件夹

    Android 微信文件传输助手文件夹

    本文主要介绍查找Android 微信文件传输助手文件夹,文件传输助手是电脑微信和手机微信传输文件的好工具,这里找到文件夹,更加便于同学们的使用
    2016-09-09
  • 编译和解释的区别是什么

    编译和解释的区别是什么

    最近发现有很多网友都提出一个问题:程序的编译与解释有什么区别?这篇文章就为大家介绍了编译和解释的区别,需要的朋友可以参考下
    2016-12-12
  • Unicode编码大揭秘

    Unicode编码大揭秘

    这篇文章主要介绍了Unicode编码大揭秘,本文介绍了编码的历史,Unicode的出现原因等,需要的朋友可以参考下
    2014-07-07
  • 256种编程语言大汇总

    256种编程语言大汇总

    这篇文章主要介绍了256种编程语言大汇总,想学编程语言的同学可以看一下,需要的朋友可以参考下
    2014-09-09
  • 24种编程语言的Hello World程序

    24种编程语言的Hello World程序

    这篇文章主要介绍了24种编程语言的Hello World程序,包括熟知的Java、C语言、C++、C#、Ruby、Python、PHP等编程语言,需要的朋友可以参考下
    2015-06-06
  • 如果你有这33种症状了请离开电脑去走走吧!

    如果你有这33种症状了请离开电脑去走走吧!

    这篇文章主要介绍了如果你有这33种症状了请离开电脑去走走吧!本文是关注程序员、上班族身心健康的文章,需要的朋友可以参考下
    2014-09-09
  • 一个30多年编程经验的程序员总结

    一个30多年编程经验的程序员总结

    这篇文章主要介绍了一个30多年编程经验的程序员总结,在我30多年的程序员生涯里,我学到了不少有用的东西,下面是我这些年积累的经验精华,需要的朋友可以参考下
    2014-09-09
  • 新手程序员编程必不可少的工具

    新手程序员编程必不可少的工具

    这篇文章主要为大家详细介绍了新手程序员编程必不可少的工具,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 程序员的新年祝福 Happy New Year

    程序员的新年祝福 Happy New Year

    再见,2017,你好,2018!祝大家在新的一年里,快快乐乐,编程技术更上一层楼,元旦快乐
    2018-01-01

最新评论