zoukankan      html  css  js  c++  java
  • HTTP:每个web开发人员必须知道的协议-基础篇

    http://blog.csdn.net/sql_wtx/article/details/8894447

    原文是http://net.tutsplus.com/tutorials/tools-and-tips/http-the-protocol-every-web-developer-must-know-part-1/,翻译这面文章的目地是为了更加深刻的了解HTTP协议。现在web技术日新月异,只有对其协议了解清楚,才能更快、更稳固掌握这些新技术。由于文章很长,我会分成几篇博客来翻译,文章里面也加上我的个人理解,如有什么不对的地方,欢迎指出,在此谢谢了!

    译文如下:

    HTTP全称是超文本传输协议(Hypertext Transfer Protocol).它是一种无国籍的,分布式系统之间通讯的应用层协议,是现代web的基础。作为一个web开发人员,我们必须对这种协议非常熟悉。

    让我们通过一个web开发镜头来回顾这种强大的协议。我们将用两个部分来解决这个问题。在第一个条目,我们讲涉及到各种请求和应答的基础和概要。在后台的文章里,我们将回顾HTTP的特殊要点,及缓存、连接处理和验证。

    HTTP基础

    HTTP允许各种各样的主机和客户端之间相连,而且支持混合的网络构架。这使HTTP作为一个无国籍的协议。通讯一般是通过TCP/IP来发生,但是任何可信赖的端口都能被用。一般TCP/IP的端口是80,但是其它端口也可以被用。

    通过一对请求和应答,主机和客户端发生了通讯。客户端发出一个HTTP请求消息,服务端通过HTTP应答消息进行返回。我们将在下面章节来看看一对基础消息。

     目前协议的版本是HTTP/1.1,在1.0版本基础添加了一些新特性。在我的观念里, 最有用的是 persistent connections(长连接), chunked transfer-coding (分块传输编码)和fine-grainedcaching headers(细粒度缓存头).在后面,我们将了解这些知识。

    URLs

    Web通讯的核心是请求消息,通过URLs来发送。我确定你对URLs已经熟悉了,只是没有完全掌握。下面是URLs的结构组成:

    这个协议一般是http,但是是安全连接的话就是https。默认端口是80,这个可以如上图一样自定义。资源路径(resource path)就是服务器上本地路径。

    动作(Verbs)

    URLs是主机的唯一通讯标示,但需要通过HTTP动作在服务器上来执行操作。当然,这些操作是客户端想要服务端来执行。

    请求动作如下:

    • GET: 获取已存在的资源,URLs包含了所有服务需要返回的资源信息。
    • POST: 建立一个新资源。POST请求通常来为新资源带来有效的数据。
    • PUT: 更新已经存在的资源。PUT请求包含了资源的更新数据。
    • DELETE: 删除已存在的资源。

    以上几种动作是最常见的,大多数工具和框架都显示这些请求动作。PUT和DELETE有时被认为是POST的特殊版本,开发者有可能在POST请求里包含了操作数据:create,upadte和delete,从而用POST来替代了PUT和DELETE。

    译者注:我以前基本只用post和get,在post里多添加一个action字段,来表示新建、修改、删除。但后面接触了RESTful架构,发觉HTTP的4种操作get、post、put、delete就是对应了我们经常碰到的增、删、改、查功能。通过对http协议的了解,有助于我们对其它知识的扩展,如RESTful、Ajax、长连接等等,其实就是对http协议的应用,而不是什么新鲜事物。

    下面还有几种很少用到的HTTP动作:

    • HEAD: 用HEAD请求的话,服务器返回的只是响应标题,而不会返回被请求的文档,一般用于搜索引擎。或者通过时间戳来判断资源是否被修改。
    • TRACE:用于诊断目地,通过header字段来获取网关和代理的ip和dns。
    • OPTIONS:用于客户端查看服务器的能力。
  • 相关阅读:
    BZOJ3212 Pku3468 A Simple Problem with Integers(线段树区间求和、区间加模板)
    BZOJ2208 [Jsoi2010]连通数
    洛谷P3952 时间复杂度
    BZOJ1051 [HAOI2006]受欢迎的牛
    BZOJ4318 OSU!
    BZOJ1798 [Ahoi2009]Seq 维护序列
    BZOJ1483 [HNOI2009]梦幻布丁
    洛谷P1439 最长公共子序列(O(nlogn)最长公共子序列模板)
    BZOJ2429 [HAOI2006]聪明的猴子
    BZOJ3714 [PA2014]Kuglarz
  • 原文地址:https://www.cnblogs.com/pesserger/p/3953924.html
Copyright © 2011-2022 走看看