HTTP协议介绍 记录

WWWC最终发布了一系列的RFC,其中最著名的就是RFC 2616。RFC 2616定义了HTTP协议的我们今天普遍使用的一个版本——HTTP 1.1。

尽管TCP/IP协议是互联网上最流行的应用,HTTP协议并没有规定必须使用它和(基于)它支持的层。 事实上,HTTP可以在任何其他互联网协议上,或者在其他网络上实现。HTTP只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。

通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。

HTTP使用TCP而不是UDP的原因在于(打开一个)一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正

请求信息(Request Message)
引用

发出的请求信息包括以下几个

    * 请求行,例如GET /images/logo.gif HTTP/1.1,表示从/images 目录下请求logo.gif 这个文件。
    * (请求)头,例如Accept-Language: en
    * 空行
    * 可选的消息体

请求行和标题必须以<CR><LF> 作为结尾(也就是,回车然后换行)。空行内必须只有<CR><LF>而无其他空格。在HTTP/1.1 协议中,所有的请求头,除Host外,都是可选的。

请求方法(Request Methods)
引用

HTTP协议中定义了八种方法(有时也叫“动作”)来表示对指定数据的操作。

HEAD

    (Head方法)要求响应与相应的GET请求的响应一样,但是没有的响应体(response body)。这用来获得响应头(response header)中的
    元数据信息(meta-infomation)有(很)帮助,(因为)它不需要传输所有的内容。

GET

   (Get方法用来)请求指定的资源。它是目前网上最常用的方法。它不应该用于一些会造成副作用的操作中
   (在网络应用中用它来提交动作是一种常见的错误用法)。(细节请)参考后面的“安全方法”(这一节)。

POST

   (POST方法用来)向指定的资源提交需要处理的数据。这些数据写在请求的内容里。(POST请求)可以导致新资源的产生和已有资源的更新。

PUT

   上传指定资源

DELETE

   删除指定资源

TRACE

   (Trace方法告诉服务器端)返回收到的请求。客户端可以(通过此方法)察看在请求过程中中间服务器添加或者改变哪些内容。

OPTIONS

   返回服务器(在指定URL上)支持的HTTP方法。通过请求“*”而不是指定的资源,这个方法可以用来检查网络服务器的功能。

CONNECT

   将请求的连接转换成透明的TCP/IP通道,通常用来简化通过非加密的HTTP代理的SSL-加密通讯(HTTPS)。

HTTP服务器至少应该实现Get和Head方法,可能的话,也实现OPTIONS方法。

安全方法

有些方法(比如HEAD, GET, OPTIONS, and TRACE) 被定义为安全方法,这些方法针对的只是信息的返回,并不会改变服务器的状态(换句话说就是这些方法不会产生副作用)。不安全的方法(例如POST, PUT and DELETE) 应该用特殊的方式向用户展示,通常是按钮而不是链接,这样就可以使用户意识到可能要负的责任(例如一个按钮带来的资金交易。)

状态行

引用

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

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

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

虽然 RFC 2616 中已经推荐了描述状态的短语,例如"200 OK","404 Not Found",但是 WEB 开发者仍然能够自行决定采用何种短语,用以显示本地化的状态描述或者自定义信息。
上一篇:中国区优化的Docker安装脚本


下一篇:微信小程序把玩(二十)slider组件