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:用于客户端查看服务器的能力。
时间: 2024-10-05 00:35:37

HTTP:每个web开发人员必须知道的协议-基础篇的相关文章

Web开发人员常犯的10个错误

说到开发一个运行在现代网络中的网站:Web开发人员需要选择虚拟主机平台和底层数据存储,准备编写HTML.CSS和JavaScript用的工具,要有设计执行方式,以及一些可用的JavaScript库/框架.在将任务分解为这几步之后,接下来要做的就简单多了,可以去网上找文章,浏览论坛,看看那些能提供更好的Web体验提示的示例. 然而不管是走哪条路,犯错却是每一个开发人员都不可避免的.虽然有些错误与某一个具体的行为相关,但有些错误却是所有Web开发人员都需要面对的挑战.因此,通过研究,体验和观察,我总

Web开发人员不要错过的60款用户界面设计工具(中)

21. Dojo Dojo是一个用javascript语言实现的开源DHTML UI工具包,可实现高性能的桌面和移动应用程序开发,在国内亦有大量忠实用户. 22. Fivesecondtest Fivesecondtest可以优化你的登陆界面,并分析设计中最突出的元素. 23. Android UI Elements Set 集合了大量Android OS UI元素,并且全部都是免费的. 24. Massive Web UI and Button Set Massive Web UI and B

[译]作为一个web开发人员,哪些技术细节是在发布站点前你需要考虑到的

前日在cnblogs上看到一遍文章<每个程序员都必读的12篇文章>,其中大多数是E文的. 先译其中一篇web相关的"每个程序员必知之WEB开发". 原文: http://programmers.stackexchange.com/questions/46716/what-technical-details-should-a-programmer-of-a-web-application-consider-before 问:对于一个web开发人员来说,在发布一个站点之前,他需

【Tomcat】面向初级 Web 开发人员的 Tomcat

Apache Tomcat 应用服务器不再是高级 Web 系统开发人员的专用领域.在本教程中,Sing Li 将向初级 Web 开发人员展示如何利用他们当前的 Java™ 开发技能,使用 Tomcat 编写服务器端 JSP.servlet 和 Web 服务. 开始之前 关于本教程 本教程向 Java Web 开发人员介绍使用 Tomcat 对 JavaServer Pages (JSP).servlet 和 Web 服务进行编程,Tomcat 是来自 Apache Foundation 的开源应

一个web开发人员在发布站点前你需要考虑哪些技术细节

转自http://www.xker.com/page/e2014/0520/132486.html 一个web开发人员在发布站点前你需要考虑哪些技术细节 文章转自Hedgehog博客 前日在cnblogs上看到一遍文章<每个程序员都必读的12篇文章>,其中大多数是E文的. 先译其中一篇web相关的”每个程序员必知之WEB开发”. 原文: http://programmers.stackexchange.com/questions/46716/what-technical-details-sho

作为Web开发人员,我为什么喜欢Google Chrome浏览器

在Google Chrome浏览器出来之前,我一直使用FireFox,因为FireFox的插件非常丰富,更因为FireFox有强大的Firebug,对于前端开发可谓神器. 在Chrome出来的时候,我就喜欢上它的简洁.快速,无论是启动速度还是页面解析速度还是Javascript执行速度(现在的FireFox4也比之前的FireFox3有很大的进步).不过当时由于Chrome的开发者工具还不是很完善,而我又不是很熟悉,加之对于Firebug的好感和依赖,当时还是用回FireFox作为我的主浏览器.

Web开发人员必读的12个网站

The more you actually create, the more you’ll learn.(创造的越多,学习的越多),世界上有无数个开发人员会在网上分享他们的开发经验,我们无法向所有人学习,因此本文搜集了全球Web开发人员最值得浏览的十二个网站,帮开发人员节省时间,快速找到有价值的信息!个个都是精品! 1. sixrevisions.com Six Revisions 现在不是以Web开发经验分享为主的博客网站,但是访问该网站可以第一时间获取Web最新消息,Six Revision

作为一个web开发人员,哪些技术细节是在发布站点前你需要考虑到的

前日在cnblogs上看到一遍文章<每个程序员都必读的12篇文章>,其中大多数是E文的. 先译其中一篇web相关的"每个程序员必知之WEB开发". 原文: http://programmers.stackexchange.com/questions/46716/what-technical-details-should-a-programmer-of-a-web-application-consider-before 问:对于一个web开发人员来说,在发布一个站点之前,他需

给 Web 开发人员推荐的文档生成工具——爱创课堂

工欲善其事必先利其器,在此给给 Web 开发人员推荐几款优秀的开源文档生成工具,希望能对大家有所帮助. 1.JavaScript JSDoc 3 https://www.oschina.net/p/jsdoc 这是一款根据 Javascript 文件中注释信息,生成 JavaScript 应用.库.模块的 API 文档的工具.你可以使用它记录如:命名空间.类.方法.方法参数等.该项目还衍生出了许多模板和其他工具来帮助生成和自定义文档,比如: 模板 jaguarjs-jsdoc:https://g