简单介绍下cookie是如何在http中运用的
来源:互联网 发布:windows 全屏快捷键 编辑:程序博客网 时间:2024/06/06 08:52
最近笔试发现很多公司都在考cookie,而我对cookie的了解仅仅知道它是一门客户端存储技术,通过http协议,通过请求在客户端(浏览器)和服务器端交互,主要作用是记录每次请求后来跟踪会话,所以在没有session之前,基本上所有的网站都是用cookie来跟踪数据的,所谓跟踪数据,其实就是记录数据,比如说你在网站上做了些操作,没有做完,关掉浏览器后下次打开,仍然保留有信息,这就是跟踪数据,记录数据,学过java-web,理解session会话机制,就很好理解了,再然后就是知道cooki是通过键值对保存数据,设置cookie的名字,设置值。然后就没啦。
接下来,大体的了解下cookie:
首先要知道为什么有cookie,用户在网站上必然要不停的向服务器发送HTTP请求来传输数据,而HTTP请求又是无状态的的协议,一旦数据交互完成后,客户端与服务端的连接就会关闭,再次交互数据需要重新建立新的连接,这意味着服务器没法跟踪上次请求记录,这时就需要cookie这种机制了,来满足HTTP无状态的不足,稍后来讲HTTP是如何携带cookie的,先解释下cookie的概念:
当服务器需要记录用户状态时,就向客户端发送一个cookie,客户端就会把cookie保存起来,当客户端再次请求服务器时,就会把cookie一同交给服务器,服务器检查cookie来辨认用户,这样就能记录每个用户的状态了。
接下来我们说下HTTP请求是如何携带cookie(网易笔试题):
有两个HTTP头部和cookie有关的:Set-cookie 和Cookie
Set-cookie 由服务器端发送,它包含在响应头部,它用于在客户端创建一个cookie
Cookie 由客户端发送,它包含在请求头部
dimain:可以访问该cookie的域名 如 .google.com 注意第一个字符必须是. 所有以google.com的结尾的域名都可以访问
path: cookie的使用路径
secure : 该cookie是否仅被使用安全协议传输(Https),默认false
httponly : 表示该cookie不能被客户端脚本(JavaScript)获得
Java 中提供了一套操作cookie的API:
http://www.cnblogs.com/xdp-gacl/p/3803033.html
Cookie cookie = new Cookie(''username","ilv"); //新建cookie
cookie.setMaxAge(integer.max_value); // 设置cookie的生命周期
如果参数为负数,表示临时性cookie,不会被写到cookie文件中,关闭窗口就失效了,如果为0表示删除这个cookie(修改cookie时用于删除它,因为cookie没有提供删除的方法),要想修改cookie只能用一个同名的cookie来覆盖,达到修改的目的,同时设置setMaxAge(0) 则表示删掉它
注意:修改、删除Cookie时,新建的Cookie除value、maxAge之外的所有属性,例如name、path、domain等,都要与原Cookie完全一样。否则,浏览器将视为两个不同的Cookie不予覆盖,导致修改、删除失败。
还有从客户端读取cookie时,除了name value,其它都是不可读的,只有name和value会被提交的服务器,maxAge仅仅时浏览器来判断cookie是否过期,至于path,domain就是判断那种请求属于哪个cookie
cookie.setDomain(".google.com");设置域名,决定运行时cookie访问的域名
注意:cookie是不可以跨域名的,同一个一级域名下的二级域名也是不能交互的,如www.google.com & image.google.com 无法交换,不过可以按照上面的方法设置,注意domain是以.开头的
cookie.setPath("/session/"); path属性决定允许访问Cookie的路径
cookie.setSecure(true); // 设置cookie的安全属性,true表示只能在安全协议中传递(https),但并不能保证绝对的安全,如果要提高安全性,可以在程序中对cookie 加密
response.addCookie(cookie) // 必须执行这一句
最后说下JavaScript操作cookie:
因为cookie是保存在客户端的,所以浏览器具有操作的先决条件,介绍一个常用操作:
document.write(document.cookie); // 输出本页所有的cookie
注意 A网站的JavaScript只能读取A网站的,读不了B网站的,安全问题,你懂的
- 简单介绍下cookie是如何在http中运用的
- java对cookie的操作比较简单,主要介绍下建立cookie和读取cookie,以及如何设定cookie的生命周期和cookie的路径问题。
- 对cookie的简单运用
- Java cookie的简单运用
- 分享一个简单的资源管理器程序,主要是演示下LINQ在C#开发中的运用
- 简单介绍一下 设计模式在android中运用
- Cookie的简单介绍
- Cookie介绍和运用
- iOS开发中大部分App的网络数据交换是基于HTTP协议的。本文将简单介绍在Swift中使用HTTP进行网络请求的几种方法。
- Android中Http加载如何得到Cookie和 WebView 加载网页如何得到的Cookie
- Http协议中Cookie详细介绍
- Http简单的介绍
- 如何在 ASP.NET 4.6 与 IIS10 中运用 HTTP/2 ?
- 如何在你的CSS文件中运用颜色值.
- 简单的hello word程序在计算机系统中是如何运行的
- 简单的hello word程序在计算机系统中是如何运行的
- 简单介绍tornado是如何实现异步非阻塞的
- 如何在CMD下运用管理员权限
- LeetCode371. Sum of Two Integers
- 详解匿名内部类
- Ajax是我们最该掌握的
- 迭代器(iterator)和for...of循环
- 文件操作:有五个学生,每个学生有 3 门课的成绩,从键盘输入以上数据(包 括学生号,姓名,三门课成绩),计算出平均成绩,将所输入有的数据和计算出 的平均分数存放在磁盘文件 "stud "中
- 简单介绍下cookie是如何在http中运用的
- Xshell的使用
- Java版ISO8583包解析工具
- 疯狂序列(水题)
- 十条java调试实践指导
- 2.dubbo源码分析 之 内核SPI实现
- weblogic 下载
- linux系统基础服务解析
- 194. Transpose File。