参考内容:

    关于HTTP协议,一篇就够了

    理解HTTP协议

    HTTP 协议入门

    超文本传输协议- 维基百科,自由的百科全书

    HTTP

 

  昨天通过读文档、读博文、看教程学习了一下HTTP协议,发现真是“天下文章一大抄”,这种现象无可厚非,毕竟知识本身也就只有那些内容,并且博文里也注明了参考链接,大家也都见怪不怪了,但是连很明显的病句都是一模一样,那就有点尴尬了。我写学习笔记肯定也会“抄”(哈哈,piapia打脸)。

一、协议概述

  文本传输协议是(英语:HyperText Transfer Protocol,缩写:HTTP)是一个客户端和服务端之间请求和应答的标准,主要规定了客户端与服务器之间的通信格式,通常使用TCP协议(尽管TCP/IP协议是互联网上最流行的应用,但是在HTTP协议中并没有规定它必须使用或它支持的层。事实上HTTP可以在任何互联网协议或其他网络上实现。HTTP假定其下层协议提供可靠的传输。因此,任何能够提供这种保证的协议都可以被其使用,所以其在TCP/IP协议族使用TCP作为其传输层)。

  HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

二、请求方法

  请求方法是客户端告诉服务器其动作意图的方法,区分大小写,HTTP/1.1协议中共定义了8种方法(也叫“动作”)来以不同方式操作指定的资源。

  •   GET      请求指定的资源。使用GET的请求应该只用于获取数据。
  •   POST     发送数据给服务器,请求主体的类型由 Content-Type首部指定。
  •   HEAD     请求资源的头部信息, 并且这些头部与GET方法请求时返回的一致。
  •   PUT      使用请求中的数据替换目标资源。
  •   DELETE    用于删除指定的资源。
  •   OPTIONS    用于获取服务器所支持的方法。
  •   CONNECT    HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。
  •   TRACE     实现沿通向目标资源的路径的消息环回(loop-back)测试 ,提供了一种实用的 debug 机制。
  •    PATCH     用于对资源进行部分修改。(由RFC 5789指定的方法)

三、状态码

  所有HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。

  状态码的第一个数字代表当前响应的类型:

    •   1XX  消息     请求已被服务器接收,继续处理
    •   2XX  成功     请求已成功被服务器接收、理解并接受
    •   3XX  重定向    需要后续操作才能完成这一请求
    •   4XX  客户端错误  请求含有语法错误或无法被执行
    •   5XX  服务器错误  服务器在处理某个正确请求时发生错误

  常用状态码:

    • 200 OK                     客户端请求成功
    • 302 Found                  临时重定向。该状态码表示请求的资源已经被分配了新的URL,但是和301的区别是302代表的不是永久性的移动,只是临时的。
    • 400 Bad Request            客户端请求有语法错误,不能被服务器所理解,需要修改后再次发送。
    • 401 Unauthorized           请求未经授权,需要有通过HTTP认证的认证信息。这个状态代码必须和WWW-Authenticate报头域一起使用。
    • 403 Forbidden              服务器收到请求,但是拒绝提供服务,因为没有获得服务器访问权限、IP被禁止等。
    • 404 Not Found              请求资源不存在。也可以在服务器拒绝请求且不想说明理由时使用。
    • 500 Internal Server Error  服务器发生不可预期的错误,很有可能是服务端程序的Bug或者临时故障。
    • 503 Server Unavailable     服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。如果事先得知解除以上情况需要的时间,最好写入Retry-After字段再返回给客户端。
    • 504 Gateway Timeout        网关超时,是代理服务器等待应用服务器响应时的超时,和408 Request Timeout的区别就是504是服务器的原因而不是客户端的原因。

四、待续

  HTTP的知识还有很多,诸如报文、URL、版本等等,这里写不动了,不写了。

12-24 18:51