美文网首页
HTTP/1.1协议知识小结

HTTP/1.1协议知识小结

作者: StarDustMrsu | 来源:发表于2019-11-14 15:37 被阅读0次

    1.关于HTTP协议

    HTTP协议(HyperText Transfer Protocol)超文本传输协议。首先要明白HTTP是基于TCP的协议,先建立好TCP连接,才能发送HTTP请求。并且1.1版本默认开启Keep-Alive,这样建立的TCP连接可以在多次请求中复用。还要明白HTTP是无状态有会话的,使用Cookies可以创建有状态的会话。在请求头方面1.1版本增加更多的请求头和响应头信息用以增强HTTP的功能例如host主机头。

    2.HTTP的请求报文

    HTTP的请求报文主要由请求行请求头(请求首部)请求数据(正文主体)组成。

    第一部分:请求行

    | 请求行字段 | 说明 | 其它 |
    | ---------------- | --------------- --------------- | ------------------------------------------------------------ |
    | GET(RequestMethod) | 通常用于请求服务端上的某个资源 | 比如GET请求一个基于HTTP的API接口获得JSON字符串,字符串里面是一个列表,列表中包含你想要获取的信息 |
    | POST(RequestMethod) | 主动告诉服务端一些信息,将客户端的信息提交到服务端 | 比如POST请求一个基于HTTP的API接口,提交想要提交的信息 |
    | PUT(RequestMethod) | 向指定的资源位置上传最新的信息 | 暂无 |
    | DELETE(RequestMethod) | 请求服务端删除Request-URI指定的资源 | 暂无 |
    | URL | 统一资源定位符 | 要获取的资源的准确路径,由协议,主机IP或域名端口号, 具体目录地址构成 |
    | 协议版本 | HTTP协议的版本号 | 比如HTTP/1.1 |

    第二部分:请求头
    请求头常见字段 说明
    Host 告知服务端,请求的资源所在的互联网主机名和端口号
    User-Agent 会将创建请求的的浏览器和用户代理名称传递给服务端
    Accept 用来告知服务端,用户代理所支持的能够处理的流媒体的类型以及相对优先级
    Accept-Encoding 用来告知服务端,用户代理所支持的内容编码以及优先顺序
    Accept-Language 用来告诉服务端,用户能够处理的自然语言集
    If-Modified-Since 告知服务端若If-Modified-Since字段的值早于资源更新时间则希望服务端处理该请求,反之返回304 Not Modified
    Accept-Charset 优先的字符集
    第三部分:请求数据
    常见字段 说明
    Allow 资源可支持的HTTP方法
    Content-Encoding 实体使用的编码格式
    Content-Language 实体使用的自然语言
    Content-Length 实体的大小
    Content-Location 替代对应资源的URL
    Content-MD5 实体的报文摘要
    Content-Range 实体的位置范围
    Content-Type 实体的媒体类型
    Expires 实体主体的过期时间
    Last-Modified 资源的最后修改时间

    3.HTTP的响应报文

    HTTP响应报文主要由状态行响应首部响应数据(正文实体)

    第一部分:状态行

    状态行主要包含协议的版本号,状态返回码,状态信息。

    常见的HTTP状态返回码 对应的状态信息 说明 其它
    200 OK 请求成功 对成功的定义取决于HTTP的请求方法
    301 Moved Permanently 永久移动,被请求的资源永久的移动到了新的URL 永久跳转
    304 Not Modified 客户端所请求的资源未修改,服务器返回此状态码 暂无
    400 Bad Request 客户端请求错误,服务器无法理解 语义有误或者请求参数有误
    401 Unauthorized 当前请求需要用户进行身份验证 暂无
    402 Payment Required 保留 暂无
    403 Forbidden 服务器理解了客户端的请求,但是拒绝执行它 有可能是服务器或服务的权限设置不当
    404 Not Found 请求失败,服务器无法根据客户端的请求找到相应资源 有可能是客户端请求了服务器上不存在的资源或者路径没写准确
    500 Internal Server Error 服务器内部错误 服务器遇到了不知道如何处理的情况,可能是服务器的设置或者内部程序的问题
    501 Not Implemented 服务器不支持客户端的请求方法 暂无
    502 Bad Gateway 作为网关或代理的服务器尝试请求时,从远端获取到一个无效的响应 可能是反向代理服务器下面的节点出问题
    503 Service Unavailable 服务器由于超载或维护,暂时无法处理客户端的请求 ,不可用 也可能是反向代理服务器后面没有可以提供服务的节点
    504 Gateway Time-out 充当网关或代理的服务器,未及时从远端服务器获取请求 可能是反向代理服务器后面的服务器过载导致没有在指定的时间内返回数据
    第二部分:响应首部
    常见首部字段 说明
    ETag 资源的匹配信息
    Server HTTP服务器的安装信息
    Vary 代理服务器缓存的管理信息
    第三部分:正文实体

    正文实体的首部字段可以参考HTTP请求报文中的正文实体首部

    还有一些通用的首部字段如下
    字段名 说明
    Cache-Control 控制缓存的行为
    Connection 逐跳首部,连接的管理
    Date 创建报文的日期时间
    Pragma 报文指令
    Upgrade 升级为其它协议
    Via 代理服务器的相关信息
    Warning 错误通知

    3.补充说明

    关于状态码

    204:成功处理请求但是响应报文不包含实体的主体部分。
    206:通过发送范围请求头Range抓取到了资源的部分数据。(partial content)
    301:永久重定向,永久跳转。
    302:临时重定向,临时跳转。
    304:服务端只返回响应头。
    400:请求的报文中存在错误。
    401:求需要认证或认证失败导致。
    403:可能是访问了没有权限的资源导致的禁止访问。
    404:访问路径错误或访问的资源已经不存在,服务器找不到客户端请求的指定页面。
    412:客户端请求的etag和服务端的不一致。
    416:所请求的范围无法满足。
    499:服务器主动关闭客户端连接。
    500:内部服务器错误,一般是服务器的设置或内部程序错误导致。
    502:坏的网关,一般是代理服务器请求后端时后端服务不可用或没有完成响应导致的。
    503:当前服务不可用,可能是服务器超载或停机或反向代理服务器后端无可用服务器。
    504:网关超时一般是后端服务器没有在指定的时间完成处理请求。
    

    相关文章

      网友评论

          本文标题:HTTP/1.1协议知识小结

          本文链接:https://www.haomeiwen.com/subject/ydmrictx.html