HTTP学习
一、HTTPS特点
- 在应用层(HTTP)和传输层(TCP)之间,使用SSL/TLS
- 用数字证书对服务器进行认证:
- 通过HTTPS建立安全的Web事务之后,浏览器会获取服务器的数字证书
- 通过验证颁发机构的签名确认是否“信任”(如果不信任会发出询问)
二、SSL连接过程
- 建立到443端口的TCP连接
- SSL安全参数握手,交换密钥
- SSL上发送HTTP请求/TCP上发送已加密请求
- SSL上发送HTTP响应/TCP上发送已加密响应
- SSL关闭
- TCP连接终止
三、HTTP消息结构
Request:
- 请求行:GET http://… HTTP/1.1
请求头(Cache头域):
- If-Modified-Since:判断是否使用304
- If-None-Match:和Etag配合使用
- Pragma:只可以设定为no-cache
- Cache-Control:public/private/no-cache
请求头(Client头域):
- Accept:浏览器可接受的媒体类型
- Accept-Language:可接受语言
- Accept-Encoding:可接受编码方法,如gzip
- Accept-Charset:可接受字符集
- User-Agent:客户端的操作系统等信息
请求头(其他):
- Cookie:缓存值
- Content-Length:发送给服务器的数据长度
- Content-Type:发送给服务器的数据类型
- Referer:指明链接来源
- Connection:是否keep-alive
Response:
- 响应行:HTTP/1.1 200 “success”
响应头(Entity头域):
- Etag:和If-None-Match配合使用
- Content-Type:响应对象字符集
- Content-Length:响应对象长度
- Content-Encoding:表明压缩方法
- Content-Language:响应对象的语言
- Set-Cookie:把Cookie发送到客户端浏览器
响应头(其他):
- Connection:close/keep-alive
- Location:重定向一个新的位置
响应码:
- 200:成功
- 302:Found重定向,新的URL会在response中的Location返回
- 304:NotModified上次文档缓存,可以继续使用
- 403:Forbidden拒绝提供服务
- 404:NotFound请求资源不存在
- 503:ServerUnavailable服务器当前不能处理客户端请求