`

HTTP协议中POST、GET、HEAD的区别是什么

    博客分类:
  • html
阅读更多
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年,Tim Berners-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.html HTTP/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  未修改(Not Modified)
  305  使用代理
④ 客户方错误
  400  错误请求(Bad Request)
  401  未认证
  402  需要付费
  403  禁止(Forbidden)
  404  未找到(Not Found)
  405  方法不允许
  406  不接受
  407  需要代理认证
  408  请求超时
  409  冲突
  410  失败
  411  需要长度
  412  条件失败
  413  请求实体太大
  414  请求URI太长
  415  不支持媒体类型
⑤ 服务器错误
  500  服务器内部错误
  501  未实现(Not Implemented)
  502  网关失败
  504  网关超时
  505 HTTP版本不支持
  比如:(在《TELNET……》一文中用telnet登陆80端口,相同的方法用在HTTP/1.1中,会发现没有显示,下面补充说明之)
telnet www.fudan.edu.cn 80
HEAD / HTTP/1.1
host:www.fudan.edu.cn /*本行为输入内容*/
HTTP/1.1 501 Method Not Implemented
Date: Web, 01 Nov 2000 07:12:29 GMT /*当前的日期/时间*/
Server: Apache/1.3.12 (Unix) /*Web服务器信息*/
Allow: GET, HEAD, OPTION, TRACE /*支持的方法类型*/
Connection: close
Connect-Type: Text/html; charset=iso-8859-1/*连接的媒体类型*/

<!DOCTYPE HTML PUBLIG "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>501 Method
Not Implemented</TITLE>
</HEAD><BODY>
<H1>Method Not Implemented</H1>
head to /inde
x.html not supported.<P>
Invalid method in request head / htp/1.1<P>
<HR>
<ADDRESS>
Apache/1.3.12 Server at www.fudan.edu.cn Port 80</ADDRESS>
</BODY></HTML>
关于实体头部的内容还可以有:
Last Modified :请求文档的最近修改时间。
Expires :请求文档的过期时间。
Connect-length:文档数据的长度。
WWW-authenricate:通知客户端需要的认证信息。
Connect-encoding :说明有无使用压缩技术。
Transfer-encoding :说明采用的编码变换类型。

  随着Internet的发展,下一代的HTTP协议HTTP-ng已经在酝酿之中,它将会提供更好的安全性、更快的速度,其改进要点为:模块化强、网络效率高、安全性更好、结构更简单。
分享到:
评论

相关推荐

    Web应用安全:HTTP协议GET和POST的使用区别文本.docx

    摘 要:浅谈HTTP中GET、POST用法以及它们的区别 关键词: HTTP协议、POST方法、GET方法、区别 HTTP方法 HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符...

    Web应用安全:HTTP协议GET和POST的使用区别实验.docx

    实验一:HTTP协议POST 实验目的 通过ajax实例深入理解http协议之post方法。 二、实验用到的工具软件 firefox的firebug插件 抓包工具wireshark 三、实验内容与步骤 1)正常情况下的html表单提交 html源码如下: &lt;!...

    Python实现简单的HTTP服务器(GET/POST)

    用Python和TCP sockets手写了一个可以接收HEAD、GET和POST等request message的简单的 HTTP web服务器。

    httpclient用法,发送get和post请求,设置header

    httpclient的用法,发送get请求和post请求,设置header

    HTTP协议调试器

    中文:HTTP协议调试器英文:...3.允许GET/POST/HEAD/PUT四种连接方式。4.支持HTTP的Proxy代理。5.自动处理重定向Redirect功能。6.自动处理Cookie的接收和发送。7.可以自行设置和增加HTTP请求命令的参数。

    restlight:使用Android和Java编写的HTTP库中的Restlight,在HTTP como中的用法:GET,POST,HEAD,OPTIONS,PUT,DELETE和TRACE; 外部hacia servidores

    休息灯Restlight ES UNA LIBRERIA HTTP对Android的Ÿ的Java,阙facilita拉creación德peticiones科莫HTTP:GET,POST,HEAD,OPTIONS,PUT,DELETEÿTRACE; 外部hacia servidores。 o耶普洛斯要求提供奶油冰淇淋。 ...

    http协议详解

    请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由...

    HTTP协议详解(真的很经典)

    请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由...

    HTTP协议详解.pdf

    请求方法常用的有GET、HEAD、 POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP 协议简单,使得HTTP 服务器的程序规 模小,因而通信速度很快。 3.灵活:HTTP 允许传输任意类型的数据对象。正在传输的类型...

    HTTPServer:HTTP Server能够处理GET,HEAD,POST请求

    开机自检方法: 按照设计,POST请求方法请求Web服务器接受请求消息正文中包含的数据,最有可能用于存储它。 在上载文件或提交完整的Web表单时,通常使用它。 此处实现了一种POST方法,该方法将检索客户端从请求主体...

    常见的四种POST 提交数据方式(小总结)

    HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中,POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。 我们知道,HTTP 协议是以 ...

    HTTP协议详解 学习servlet的必备资料

    请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由...

    Http协议详解(中文版)

    请求方法常用的有GET、HEAD、 POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP 协议简单,使得HTTP 服务器的程序规 模小,因而通信速度很快。 3.灵活:HTTP 允许传输任意类型的数据对象。正在传输的类型...

    Ajax的post方法的使用

    Ajax的post方法的使用,Ajax的post方法的使用,在http协议中还有,get、put、head、和delete

    模拟post、put、head、get、patch、link、lock等多种请求

    多种请求方式请求url得到回调,支持params(key,value)传值。 支持window,ios,Linux

    NginxExecute模块通过GET POST和HEAD执行shell命令以显示结果。-Linux开发

    NginxExecute简介NginxExecute模块通过GET和POST执行shell命令以显示结果。 配置示例:location ... {......命令打开; } NginxExecute简介NginxExecute模块通过GET和POST执行shell命令以显示结果。 配置示例:...

    Web应用安全:HTTP方法.pptx

    HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。 HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法 1、HTTP请求的方法 HTTP方法 1、HTTP请求的方法 HTTP方法 2、GET和POST比较 GET ...

    HTTP协议详解

    请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由...

Global site tag (gtag.js) - Google Analytics