iOS http https小结

http协议

http协议超文本传输协议,用于规定客户端和服务器端的传输规则,包括请求行、请求头、请求体
请求行:请求方法 请求统一资源定位符 http版本号
请求方法:
iOS设置请求方法 NSURLRequest setHTTPMethod
请求统一资源定位符:
初始化的时候指定统一资源定位符的位置 NSURLRequest requestWithURL: cachePolicy: timeoutInterval:
http版本号:默认,不做设置


请求头:
Host: 目标服务器的网络地址
Accept: 让服务端知道客户端所能接收的数据类型,如text/html /
Content-Type: body中的数据类型,如application/json; charset=UTF-8
Accept-Language: 客户端的语言环境,如zh-cn
Accept-Encoding: 客户端支持的数据压缩格式,如gzip
User-Agent: 客户端的软件环境,我们可以更改该字段为自己客户端的名字,比如QQ music v1.11,比如浏览器Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/600.8.9 (KHTML, like Gecko) Maxthon/4.5.2
Connection: keep-alive,该字段是从HTTP 1.1才开始有的,用来告诉服务端这是一个持久连接,“请服务端不要在发出响应后立即断开TCP连接”。关于该字段的更多解释将在后面的HTTP版本简介中展开。
Content-Length: body的长度,如果body为空则该字段值为0。该字段一般在POST请求中才会有。
POST请求的body请求体也有可能是空的,因此POST中Content-Length也有可能为0

Cookie: 记录者用户信息的保存在本地的用户数据,如果有会被自动附上
-[NSMutableURLRequest addValue: forHTTPHeaderField:]
设置请求头
-[NSURLRequest allHTTPHeaderFields]
获取已经被设置的请求头
请求体:
请求体包含了你要发送给服务器的真正的内容,使用setHttpBody

http响应:包括http响应状态行 响应头 响应体
响应状态行:
http版本号
状态码
状态码对应的英文字符

响应头 Header
解释
示例
Accept-Ranges
表明服务器是否支持指定范围请求及哪种类型的分段请求
Accept-Ranges: bytes
Age
从原始服务器到代理缓存形成的估算时间(以秒计,非负)
Age: 12
Allow
对某网络资源的有效的请求行为,不允许则返回405
Allow: GET, HEAD
Cache-Control
告诉所有的缓存机制是否可以缓存及哪种类型
Cache-Control: no-cache
Content-Encoding
web服务器支持的返回内容压缩编码类型。
Content-Encoding: gzip
Content-Language
响应体的语言
Content-Language: en,zh
Content-Length
响应体的长度
Content-Length: 348
Content-Location
请求资源可替代的备用的另一地址
Content-Location: /index.htm
Content-MD5
返回资源的MD5校验值
Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==
Content-Range
在整个返回体中本部分的字节位置
Content-Range: bytes 21010-47021/47022
Content-Type
返回内容的MIME类型
Content-Type: text/html; charset=utf-8
Date
原始服务器消息发出的时间
Date: Tue, 15 Nov 2010 08:12:31 GMT
ETag
请求变量的实体标签的当前值
ETag: “737060cd8c284d8af7ad3082f209582d”
Expires
响应过期的日期和时间
Expires: Thu, 01 Dec 2010 16:00:00 GMT
Last-Modified
请求资源的最后修改时间
Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT
Location
用来重定向接收方到非请求URL的位置来完成请求或标识新的资源
Location: http://www.zcmhi.com/archives/94.html

参考网址:http://tools.jb51.net/table/http_header

cookie在iOS的使用

NSHTTPCookie 类表示一个cookie对象 通过properties获取所有的cookie属性,也可以自己设置cookie属性
NSHTTPCookieStorage 通过NSHTTPCookieStorage 管理自己的cookie
(NSArray *)cookies 获取所有的cookie对象
获取特定url的cookie
- (NSArray )cookiesForURL:(NSURL )theURL;
多个应用间不共享cookie
删除应用cookie会被删除
重启应用和系统 cookie会存在。

https协议

https请求原理:http+ssl/tls
过程
1.客户端发起https请求
2.服务器端配置:要有一对公��和私要,可以自己生成,也可以通过向第三方机构申请,区别:自己的证书要客户端验证 第三方的不需要
3.传送证书,也就是公钥,还包含其他信息
4.验证证书的合法性
5.如果合法就生成随机值,随机值就是对称加密的私钥。
6.然后使用公钥加密。
验证证书的合法性
1.验证是否过期
2.验证证书是否被吊销
3.验证证书是否是ca颁发


证书的签名是由根证书的的私钥签发的,要验证签名就要使用跟证书的公钥去解密。
数字签名和解签(验签)过程:使用hash函数对报文数据生成摘要,使用自己的私钥对摘要进行签名(其实就是加密过程),生成签名数据,把原始数据报文和签名数据发送给对方。接收方收到原始数据报文和签名数据后,首先使用相同的hash函数对原始数据生成一个摘要,其次,用对方的公钥对签名数据进行解签名(解密过程),这个解签名的结果也是个摘要,最后比较这两个摘要是否相同,如果相同那么接收方就能确认该数字签名是发送方的。
iOS支持https请求

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值