HTTP
HTTP: HyperText Transfer Protocol。超文本传输协议。一种分布式的,协作的,超媒体信息系统的协议,面向应用层。
允许信息以类MIME消息的格式传送,包括传输数据的元信息和对请求/响应语句的修饰。
请求消息。
Method
Request-URL
HTTP-Version
General-Header;Request-Header;Entity-Header
Message-body
响应消息。
HTTP-Version
Status-Code
Reason-Phrase
General-Header;Request-Header;Entity-Header
Message-body
看一眼Google的general消息(chrome)。
请求的方法:
GET:获取Request-URL制定的信息,以实体的格式。
POST:请求源服务器接受请求中的实体作为请求资源的一个新的从属物。(提交一个键值对的表单)
GET与POST的区别:
GET向服务器提交的request,参数在URL地址中,可以被直观看见,大小有限制(一般取决于所用浏览器对URL长度的控制,chrome为8182字符)。POST将内容放在消息Message-body中,没有大小限制。
GET是等幂方法,POST不是。
等幂方法:多个相同请求的副作用与单个请求的副作用一直,即值不变,请求相同,不论次数,结果相同。
响应的状态码:
1XX,通知类的。 100:继续;101:切换协议。
2XX,成功的。 200:OK;201:已创建;202:接受。
3XX,重定向的。301永久移动;302:发现(暂时移动)。
4XX,客户端错误。400:Bad Request;401:未授权;403:Forbidden;404:Not Found;405:MethodNot Allowed;408:请求超时。
5XX 服务器错误。500:服务器内部错误;505:HTTP版本不支持。
绝对URI地址:
协议名称://服务器地址:服务器端口号/带层次的文件路径?查询字符#片段标识符
看一眼谷歌的搜索地址:
HTTP的无状态。
因为HTTP是一种无状态协议,每一次的信息都没有关于上一次信息的记录,所以,通过在客户端保存cookie的方式记录,再需要的时候发给对方。
看一眼Google的cookie。
在响应消息中,设置客户端的cookie:
在请求消息中,发送cookie(经过加密的):
Cookie属性。
Expires:绝对过期时间。采用格式:星期,日-月-年 时:分:秒 GMT(格林威治时间)。
Max-Age:存活时间。以秒为单位,存在Expires和Max-Age时,以后者为准。
Path:指定与cookie关联的网址。
Domain:目标域,默认服务器的主机名。
Secure:必须通过安全协议传送。
HTTPOnly:不允许被脚本APIs获取。
HTTPS(HTTP secure)
通信加密,HTTP可以与SSL(Secure Socket Layer,安全套接层)或TLS(Transfer Layer Security,安全层传输协议)的组合。与SSL的组合,成为HTTPS或HTTP OverSSl;与TLS的成为 HTTP Over TLS。
SSL加密过程:
服务器与客户互相协商安全组件。(客户发送一个自己支持的安全组件,由服务器挑选后返回一个结果)
服务器用自己的公开密匙向数字证书认证机构发送,数字证书认证机构用机构的私有密匙给服务器的公有密匙署数字签名,兵颁发公匙证书。服务器将签名公匙和证书发给客户。
客户用数字认证机构的公匙验证签名的有效性。(公匙一般内置在浏览器中)。客户生成一个随机数,作为pre-master secret,用服务器的公匙加密后,发给服务器。
服务器用私有密匙解开pre-master secret,然后生成master secret。
客户端此时拥有服务器的公匙和一个随机数 master secret;服务器拥有自己的私匙和客户的master secret。
服务器对客户的认证方式:
BASIC(基本认证);DIGET(摘要认证);SSL客户端认证;FORM BASED(基于表单的认认证。