我爱编程

HTTP协议

2018-01-30  本文已影响0人  itsenlin

简介

HTTP(HyperText Transfer Protocol),当前一直使用的译法是超文本传输协议。应该算是当前最广泛使用的一种网络协议,现在人们上网都少不了使用浏览器浏览网页,这里面使用的就是HTTP协议。

这里的Transfer是转移,转换的意思,不是传输的意思。当前的译法是一个历史遗留问题

发展史

HTTP协议更新还是比较慢的,也可以说明此协议还是比较稳定的,这么多年只发布了1.0、1.1、2.0三个版本。

特点

HTTP有很明显的优点,也有很明显的缺点,所以现在单单使用HTTP协议的极少

HTTP协议所处位置

HTTP是应用层协议底层使用的TCP/IP,如下图:


http协议位置.jpg

HTTP报文

HTTP报文结构包含首部和主体两个部分。根据HTTP的通信原理分为请求报文和响应报文


请求报文结构jpg.jpg 响应报文结构png.png

HTTP请求方法

主要是为了告知服务端要做什么样的操作。HTTP/1.1中可用的有:

PUT和POST是争议最大的两个方法,这两个方法都可以实现创建资源以及修改资源的目的,取决于设计实现。两者最主要的区别是PUT具有幂等性,而POST的具有。一般来讲都是使用PUT创建或者覆盖资源,而使用POST修改资源。

HTTP首部

HTTP首部由很多字段构成,每个字段由字段名和字段值构成,中间以":"分隔。字段值可以有多个以","分隔。每个字段值还可以设置属性以“;”分隔,q=[0,1]表示权重(即权重取值0到1,默认为1,越大权重越大)。
Accept-Language:zh-CN,zh;q=0.9

注意:当HTTP首部中出现了多个字段名一样的字段时,规范未做明确规定。所以结果也未可知,所以最好不要出现这种情况 。

4种HTTP首部

  1. 通用首部字段
    请求报文和响应报文都会使用的字段。
    常见的有:

    • Connection: 控制不在转发给代理的首部字段和管理持久连接
      Connection:close关闭连接
      Connection:Keep-AliveHTTP/1.0版本实现长连接的方法
    • Upgrade:用于检测HTTP协议及其他协议是否可以使用更改版本进行通信,其参数值可以用来指定一个完全不同的通信协议,像WebSocket协议,就可以使用下面方法:
      Connection: Upgrade
      Upgrade: websocket
      
  2. 请求首部
    从客户端向服务端发送请求时使用的首部。补充请求的附加内容、客户端信息、响应内容相关优先级等。
    常见的有:

    • Accept: 用户代码可处理的媒体类型
    • Accept-Charset: 优先处理的字符集
    • Accept-Encoding: 优先的内容编码
    • Accept-Language: 优先的语言(中文、英文等自然语言)
    • Host:请求资源所在服务器
    accept:text/plain, */*; q=0.01
    accept-encoding:gzip, deflate, br
    accept-language:zh-CN,zh;q=0.9
    
  3. 响应首部
    从服务端向客户端返回报文时使用的首部。补充了响应的附加内容。
    常见的有:

    • Location: 令客户端重定向到指定的URI
    • Retry-After: 对再次发起请求的时机要求
    • Server: HTTP服务器的安装信息
  4. 实体首部
    针对请求报文和响应报文的实体部分使用的首部。补充了与实体资源有关的信息。
    常用的有:

    • Content-Type: 实体主体的媒体类型
    • Content-Length: 实体主体的大小,单位字节
    • Content-Language: 实体主体的自然语言
    • Content-Encoding: 实体主体适用的编码方式
    • Expires: 实体主体过期时间
    • Last-Modified: 资源的最后修改时间
    content-length:5
    content-type:text/html; charset=utf-8
    

HTTP状态码

状态码主要是描述服务端对请求处理的返回结果。
状态码类别

状态码 类别 描述 常用
1XX Informational(信息性状态码) 接收的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕 200 OK,204 No Content,206 Partial Content
3XX Redirection(重定向状态码) 需求进行附加操作以完成 301 Moved Permanently, 302 Found, 303 See Other, 304 Not Modified, 307 Temporary Redirect
4XX Client Error(客户端错误码) 服务器无法处理请求 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found
5XX Server Error(服务端错误码) 服务器处理请求出错 500 Internal Server Error, 503 Service Unavailable
上一篇 下一篇

猜你喜欢

热点阅读