`
- 浏览:
466997 次
- 性别:
- 来自:
昆明
-
HTTP协议中POST、GET、HEAD的区别是什么?分别在什么情况下使用?
HTTP是Web协议集中的重要协议,它是从客户机/服务器模型发展起来的。客户机/服务器是运行一对相互通信的程序,客户与服务器连接时,首先,向服务器提出请求,服务器根据客户的请求,完成处理并给出响应。浏览器就是与Web服务器产生连接的客户端程序,它的端口为TCP的80端口,。浏览器与Web服务器之间所遵循的协议就是HTTP。 笔者曾在第六期的《用telnet登陆非23端口》一文中写过关于用telnet访问http/1.0,恰逢有朋友问起用netants下载文件时发生的一个关于http/0.9问题,打开IE5.0选择工具、Internet选项、高级,可以发现HTTP/1.1的设置,使用HTTP/1.1。所以,这里想向大家详细介绍关于HTTP协议的发展历程,以便于大家更好的运用HTTP访问Internet。 HTTP的早期版本为HTTP/0.9,它适用于各种数据信息的简洁快速协议,但是其远不能满足日益发展各种应用的需要。但HTTP/0.9作为HTTP协议具有典型的无状态性:每个事务都是独立进行处理的,当一个事务开始就在客户与服务器之间建立一个连接,当事务结束时就释放这个连接。HTTP/0.9包含Simple-Request&Simple-Responsed的报文结构。但是客户无法使用内容协商,所以服务器也无法返回实体的媒体类型。 1982年,TimBerners-Lee提出了HTTP/1.0,在此后的不断丰富和发展中,HTTP/1.0成为最重要的面向事务的应用层协议。该协议对每一次请求/响应,建立并拆除一次连接。其特点是简单、易于管理,所以它符合了大家的需要,得到了广泛的应用。其缺点是仍会发生下列问题:对用户请求响应慢、网络拥塞严重、安全性等。 1997年形成的HTTP/1.1,也就是现在普遍使用的协议,在持续连接操作机制中实现流水方式,即客户端需要对同一服务器发出多个请求时,其实现在多数的网页都是有多部分组成(比如多张图片),可用流水线方式加快速度,流水机制就是指连续发出多个请求并等到这些请求发送完毕,再等待响应。这样就大大节省了单独请求对响应的等待时间,使我们得到更快速的浏览。 另外,HTTP/1.1服务器端处理请求时按照收到的顺序进行,这就保证了传输的正确性。当然,服务器端在发生连接中断时,会自动的重传请求,保证数据的完整性。 HTTP/1.1还提供了身份认证、状态管理和Cache缓存等机制。这里,我想特别提一下关于HTTP/1.1中的Cache缓存机制对HTTP/1.0的不足之处的改进,它严格全面,既可以减少时间延迟、又节省了带宽。HTTP/1.1采用了内容协商机制,选择最合适的用户的内容表现形式。 现在,很多地方都有用到的虚拟主机技术在HTTP/1.1中也可以实现。所谓的虚拟主机技术,就是同一主机地址实际对应多台主机。通俗的讲,当你同时在一个网站申请两个主页时,用协议分析仪可以发现其实这两个主页对应的是同一个IP地址。这样用多台完全相同的机器形成WWW服务器就可以提高处理的吞吐量。 传统的解决方案是改造域名服务器使其可以根据一定的算法将同一域名解释成不同的IP地址。分别对应虚拟主机的每台机器,其缺点是要求每台机器占用完全独立的IP地址,这与IP地址的缺乏是相矛盾的。 HTTP/1.1提供的解决方案在HTTP协议自身中加入了指定不同主机的功能,从而多台主机可以共享一个IP地址,既提高了性能又便于管理。 因为HTTP/1.1是Internet现行的标准协议,这里详细介绍其相关语法。 首先,HTTP/1.1格式可写为: 其中请求方法是请求一定的Web页面的程序或用于特定的URL。可选用下列几种: GET:请求指定的页面信息,并返回实体主体。 HEAD:只请求页面的首部。 POST:请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。 PUT:从客户端向服务器传送的数据取代指定的文档的内容。 DELETE:请求服务器删除指定的页面。 OPTIONS:允许客户端查看服务器的性能。 TRACE:请求服务器在响应中的实体主体部分返回所得到的内容。 PATCH:实体中包含一个表,表中说明与该URI所表示的原内容的区别。 MOVE:请求服务器将指定的页面移至另一个网络地址。 COPY:请求服务器将指定的页面拷贝至另一个网络地址。 LINK:请求服务器建立链接关系。 UNLINK:断开链接关系。 WRAPPED:允许客户端发送经过封装的请求。 Extension-mothed:在不改动协议的前提下,可增加另外的方法。比如: GET/index.htmlHTTP/1.1 Accept:text/plain/*纯ASCII码文本文件*/ Accept:text/html/*HTML文本文件*/ User-Agent:Mozilla/4.5(WinNT) 说明浏览器使用Get方法请求文档/index.html。浏览器则只允许接收纯ASCII码文本文件和HTML文本文件,其使用的引擎是Mozilla/4.5(Netscape)。 当服务器响应时,其状态行的信息为HTTP的版本号,状态码,及解释状态码的简单说明。现将5类状态码详细列出:①客户方错误 100 继续 101 交换协议②成功 200 OK 201 已创建 202 接收 203 非认证信息 204 无内容 205 重置内容 206 部分内容③重定向 300 多路选择 301 永久转移 302 暂时转移 303 参见其它 304 未修改(NotModified) 305 使用代理④客户方错误 400 错误请求(BadRequest) 401 未认证 402 需要付费 403 禁止(Forbidden) 404 未找到(NotFound) 405 方法不允许 406 不接受 407 需要代理认证 408 请求超时 409 冲突 410 失败 411 需要长度 412 条件失败 413 请求实体太大 414 请求URI太长 415 不支持媒体类型⑤服务器错误 500 服务器内部错误 501 未实现(NotImplemented) 502 网关失败 504 网关超时 505HTTP版本不支持 比如:(在《TELNET……》一文中用telnet登陆80端口,相同的方法用在HTTP/1.1中,会发现没有显示,下面补充说明之)telnetwww.fudan.edu.cn80HEAD/HTTP/1.1host:www.fudan.edu.cn/*本行为输入内容*/HTTP/1.1501MethodNotImplementedDate:Web,01Nov200007:12:29GMT/*当前的日期/时间*/Server:Apache/1.3.12(Unix)/*Web服务器信息*/Allow:GET,HEAD,OPTION,TRACE/*支持的方法类型*/Connection:closeConnect-Type:Text/html;charset=iso-8859-1/*连接的媒体类型*/<!DOCTYPEHTMLPUBLIG"-//IETF//DTDHTML2.0//EN"><HTML><HEAD><TITLE>501MethodNotImplemented</TITLE></HEAD><BODY><H1>MethodNotImplemented</H1>headto/index.htmlnotsupported.<P>Invalidmethodinrequesthead/htp/1.1<P><HR><ADDRESS>Apache/1.3.12Serveratwww.fudan.edu.cnPort80</ADDRESS></BODY></HTML>关于实体头部的内容还可以有:LastModified:请求文档的最近修改时间。Expires:请求文档的过期时间。Connect-length:文档数据的长度。WWW-authenricate:通知客户端需要的认证信息。Connect-encoding:说明有无使用压缩技术。Transfer-encoding:说明采用的编码变换类型。 随着Internet的发展,下一代的HTTP协议HTTP-ng已经在酝酿之中,它将会提供更好的安全性、更快的速度,其改进要点为:模块化强、网络效率高、安全性更好、结构更简单。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
### Web应用安全:HTTP协议GET和POST的使用区别实验 #### 实验背景及目标 本实验旨在通过实际操作深入理解HTTP协议中POST方法的工作机制及其与GET方法的区别。实验将利用Firefox浏览器的Firebug插件以及Wireshark...
在Web应用安全方面,理解GET和POST的使用差异至关重要,因为它们直接关系到数据的保密性、完整性和系统的稳定性。开发者应根据需求选择合适的HTTP方法,确保Web应用的正常运行和用户数据的安全。
总的来说,理解HTTP协议中的POST与GET区别对于开发人员至关重要,这有助于优化应用程序性能、确保数据安全以及正确处理服务器响应。在C#中,通过HttpWebRequest和HttpWebResponse类,可以方便地实现HTTP请求,从而与...
3. **请求体**:在POST等请求方法中携带的数据。 4. **响应信息** - **状态行**:包括HTTP版本、状态码及状态信息。 - **响应头**:类似于请求头,提供关于响应的信息。 - **响应正文**:服务器返回的实际数据。...
本文将深入探讨标题中提及的HTTP请求方法,包括POST、PUT、GET、HEAD、PATCH、LINK和LOCK,并结合描述中提到的跨平台支持,如Window、iOS和Linux,以及可能使用的工具——Postman。 1. **POST**:POST是最常见的...
这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。HEAD 方法通常用于获取资源的元数据,而不需要获取资源的实际内容。 GET 方法 GET 方法用于向特定的资源发出请求。GET 方法...
在Web开发中,`POST`与`GET`是两种非常重要的请求方式,它们分别用于向服务器发送数据。虽然这两种方法在功能上有些相似,但其工作原理、应用场景以及安全性等方面存在显著差异。接下来,我们将详细探讨`POST`与`GET...
在本文中,我们将深入探讨 HTTP 请求方法的差异,包括 GET、POST、PUT 等请求方法的特点和应用场景。 HTTP 请求方法概述 HTTP 请求方法是指客户端向服务器端发送的请求,以获取或修改服务器上的资源。常见的 HTTP ...
在Web开发中,由于浏览器的同源策略限制,JavaScript无法直接访问不同源的资源,这在使用jQuery进行AJAX操作时会遇到问题。本篇将详细介绍如何解决jQuery跨域问题,涉及的方法包括$.get、$.post和$.getJSON等。 ...
在原始版本中,http_load支持GET和HEAD请求,但在这个特定的“修改版”中,它已被调整为仅支持POST请求。这表明该工具可能被专门设计用于测试处理POST数据的Web服务或API接口。 POST请求是HTTP协议中的一个重要方法...
它于 1990 年提出,经过多年的发展和完善,目前在 WWW 中使用的是 HTTP/1.0 的第六版,HTTP/1.1 的规范化工作正在进行中。 HTTP 协议的主要特点包括: 1. 支持客户 / 服务器模式 2. 简单快速:客户向服务器请求...
请求由三部分组成:方法、URL和协议版本,如GET、POST等方法用于向服务器获取或提交数据;URL指示要访问的资源位置;协议版本确保客户端和服务器之间的兼容性。响应则包含状态码、响应头部和响应体,状态码如200表示...
httpclient的用法,发送get请求和post请求,设置header
本教程主要聚焦于HTTP POST方法的使用,这是HTTP协议中的一个核心概念,用于向服务器发送数据。POST请求常用于提交表单、上传文件或者在API接口中传递复杂的数据结构。 首先,我们需要了解HTTP协议的基本原理。HTTP...
休息灯Restlight ES UNA LIBRERIA HTTP对Android的Ÿ的Java,阙facilita拉creación德peticiones科莫HTTP:GET,POST,HEAD,OPTIONS,PUT,DELETEÿTRACE; 外部hacia servidores。 o耶普洛斯要求提供奶油冰淇淋。 ...
在HTTP协议中,主要有两种类型的操作:GET和POST。GET方法用于获取资源,而POST方法常用于提交数据,如表单提交。除此之外,还有PUT、DELETE、HEAD等其他方法,它们各自在不同的场景下有着特定的应用。 HTTP请求...
文章中提到了在嵌入式系统中实现HTTP协议的具体应用案例,包括使用Motorola Dragonball 68EZ328处理器、512KB Flash内存、2MB SRAM,以及Wavecom GSM模块等硬件环境。这些案例展示了在有限的硬件资源下,如何有效地...
POST请求常用于提交表单数据,GET请求中的数据通常在URL中以查询字符串的形式携带。 ### HTTP版本 HTTP经历了多个版本的发展,从最早的HTTP/0.9到现在的HTTP/2和HTTP/3。 1. **HTTP/1.0**: 基本的请求/响应模型,...
其他方法包括PUT、DELETE、HEAD、OPTIONS等,它们在不同的场景中有特定用途。 HTTP协议使用TCP/IP作为传输层协议,确保数据的可靠传输。HTTP报文在网络上传输时被分割为TCP段,每个TCP段包含一个序列号,用于在接收...
需要注意的是,使用`$_GET`传递数据有一定的局限性,特别是在数据量较大或者数据敏感性较高的情况下。此外,直接在URL中显示数据可能会导致一些问题,如数据长度限制和潜在的安全问题。因此,在处理敏感数据或大量...