HTTP
HTTP属于应用层的面向对象的协议,简洁快速,适用于分布式超媒体信息系统;
1>支持C/S模式
2>简单快速:客户发起请求时,只需要传输请求方法和路径。
3>灵活:允许任意类型的数据对象。
4>无连接:每次只处理一个请求,处理完就断开连接(可以设置为长连接)
5>无状态:对事物处理没有记忆能力,优点是:服务器不需要先前信息时应答快。缺点:后续需要先前的信息必须要重传。
请求篇
分为三部分:请求行,消息报头,请求正文
请求行:
> 以一个方法符号开头,以空格分开,后面跟着请求的URL和协议和版本,
> 例如:GET /test/hello.html HTTP/1.1
> GET:获取所标识资源
> POST:在请求资源后附加新的数据
> HEAD:请求获取表示的资源的响应消息报头
> PUT:请求服务器存储一个资源
> DELETE:请求服务器删除所标识的资源
> TRACE:请求服务器回收送到的请求信息,主要用于测试或诊断
> CONNECT:保存将来所使用
> OPTIONS请求查询服务器的性能
GET POST的区别:
GET重点是从ser上获取资源,POST重点在向服务器发送数据
GET传输通过URL请求,过程用户可见,POST通过POST机制,用户不可见
GET传输数据量小,受URL限制,POST可以大量传输数据
GET不安全(URL可见),POST相对安全性高一点
响应篇
响应也是三部分:状态行,消息报头,响应正文
状态行:HTTP-Version status-code reason-phrase
前:服务器协议的版本 中:返回的状态码 后:状态码的文本描述
状态码:三位数,第一位是响应类别:
> 1XX:指示信息 --已经接收,继续处理
> 2XX:成功 --请求被接收,理解,接受
> 3XX: 重定向 --要完成请求还需进一步操作
> 4XX:客户端错误 --请求语法或者请求无法实现
> 5XX:服务器错误 --服务器未能完成合法的请求
常见状态码:
200 OK == 客户请求成功
400 Bad Request == 客户请求有语法错误
401 Unauthorized == 请求未经授权
403 Not found == 请求不存在
500 Internal Server Error == 服务区发生不可预期错误
报头详谈
常用的请求报头:
Accept请求报头域用于指定客户端接受哪些类型的信息。
Accept-Charset请求报头域用于指定客户端接受的字符集。
Accept-Encoding请求报头域类似于Accept,但是它是用于指定可接受的内容编码。
Accept-Language请求报头域类似于Accept,但是它是用于指定一种自然语言。
Authorization请求报头域主要用于证明客户端有权查看某个资源。
Host请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的。User-Agent请求报头域允许客户端将它的操作系统、浏览器和其它属性告诉服务器。
/////////////////////////////////////////////////////////
响应报头:响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。
常用的响应报头:
Location响应报头域用于重定向接受者到一个新的位置。Location响应报头域常用在更换域名的时候。
Server响应报头域包含了服务器用来处理请求的软件信息
////////////////////////////////////////////////////////
实体报头:请求和响应消息都可以传送一个实体。
常用的实体报头:
Content-Encoding指示已经被应用到实体正文的附加内容的编码。
Content-Language实体报头域描述了资源所用的自然语言。
Content-Length实体报头域用于指明实体正文的长度,以字节方式存储的十进制数字来表示。
Content-Type实体报头域用语指明发送给接收者的实体正文的媒体类型。
Last-Modified实体报头域用于指示资源的最后修改日期和时间。
Expires实体报头域给出响应过期的日期和时间。