HTTP cookie基本理解
来源:互联网 发布:mac虚拟机玩游戏 编辑:程序博客网 时间:2024/06/16 18:50
1、HTTP cookie
cookie最早由网景公司前雇员Lou Montulli于1993年发明,cookie是在客户端首次对服务器进行请求时由服务器生成,并包含在返回给客户端的响应的HTTP头中,发送给客户端,客户端在后续对服务器的请求中需要将之前从服务器接收到的cookie信息附带在HTTP 请求头中回传至服务器,服务器通常借此维护服务器与客户端的通话状态。
根据Netscape cookie草案的描述,Cookie 是Web 服务器向用户的浏览器发送的一段ASCII码文本。一旦收到Cookie,浏览器会把Cookie的信息片断以"名/值"对(name-value pairs)的形式储存保存在本地。这以后,每当向同一个Web 服务器请求一个新的文档时,Web 浏览器都会发送之站点以前存储在本地的Cookie。创建Cookie的最初目的是想让Web服务器能够通过多个HTTP请求追踪客户。有些复杂的网络应用需要在不同的网页之间保持一致,它们需要这种会话状态的保持能力。
创建cookie
通过HTTP的Set-Cookie消息头,Web服务器可以指定存储一个cookie。Set-Cookie消息的格式如下面的字符串(中括号中的部分都是可选的)
1
Set-Cookie:value [ ;expires=date][ ;domain=domain][ ;path=path][ ;secure]
消息头的第一部分,value部分,通常是一个name=value格式的字符串。事实上,原始手册指示这是应该使用的格式,但是浏览器对cookie的所有值并不会按此格式校验。实际上,你可以指定一个不包含等号的字符串并且它同样会被存储。然而,通常性的使用方式是以name=value的格式(并且多数的接口只支持该格式)来指定cookie的值。
当一个cookie存在,并且可选条件允许的话,该cookie的值会在接下来的每个请求中被发送至服务器。cookie的值被存储在名为Cookie的HTTP消息头中,并且只包含了cookie的值,其它的选项全部被去除。例如:
1
Cookie : value
通过Set-Cookie指定的选项只是应用于浏览器端,一旦选项被设置后便不会被服务器重新取回。cookie的值与Set-Cookie中指定的值是完全一样的字符串;对于这些值不会有更近一步的解析或转码操作。如果在指定的请求中有多个cookies,那么它们会被分号和空格分开,例如:
1
Cookie:value1 ; value2 ; name1=value1
服务器端框架通常会提供解析cookies的功能,并且通过编程方式获取cookies的值。
以下是在网上摘抄的一段ios下cookie的使用,讲解非常好
2
3
4
for (NSHTTPCookie *cookie in [cookieJar cookies]) {
NSLog(@"%@", cookie);
}
2
3
4
5
6
7
8
9
10
11
12
cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData
timeoutInterval:3];
[NSURLConnection sendSynchronousRequest:request
returningResponse:nil
error:nil];
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *cookie in [cookieJar cookies]) {
NSLog(@"%@", cookie);
}
2
3
4
5
NSArray *_tmpArray = [NSArray arrayWithArray:[cookieJar cookies]];
for (id obj in _tmpArray) {
[cookieJar deleteCookie:obj];
}
2
3
4
5
6
7
8
9
10
[cookieProperties setObject:@"username" forKey:NSHTTPCookieName];
[cookieProperties setObject:@"rainbird" forKey:NSHTTPCookieValue];
[cookieProperties setObject:@"cnrainbird.com" forKey:NSHTTPCookieDomain];
[cookieProperties setObject:@"cnrainbird.com" forKey:NSHTTPCookieOriginURL];
[cookieProperties setObject:@"/" forKey:NSHTTPCookiePath];
[cookieProperties setObject:@"0" forKey:NSHTTPCookieVersion];
NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieProperties];
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
- HTTP cookie基本理解
- HTTP中Cookie,Session的理解
- tcp ip http socket https 基本理解
- HTTP协议是无状态协议,怎么理解? session cookie
- HTTP cookie
- HTTP cookie
- http cookie
- http cookie
- HTTP cookie
- HTTP-cookie
- http Cookie
- HTTP Cookie
- Http Cookie
- HTTP Cookie
- http cookie
- HTTP Cookie
- HTTP Cookie
- cookie理解
- [045] 微信公众平台开发教程第21篇-“可信网址”白名单
- Android SDK Manager需要下载类目
- 北京周边ui设计培训机构哪里好
- 黑马程序员__java基础__反射
- 第十四周(-用文件保存的学生名单)
- HTTP cookie基本理解
- Session的生命周期
- 适合移动手机使用的js环形菜单特效插件
- oracle优化(一) oracle数据库使用 TIMESTAMP(6)类型保存年月日时分秒
- EHcache模拟对象增删改查时缓存
- meta标签中的http-equiv属性使用介绍
- 第一次篮桥杯
- php self
- ACM中的期望 概率问题