`

Http协议

阅读更多

 Http协议(超文本传输协议Hyper Text transfer Protocol)   主要作用是从www服务器传输问题到本地浏览器的协议,不仅仅保证计算机正确快速的传输超文本文档,还确定传输文档中的那一部分,以及哪部分内容显示等。

  HTTP协议采用的是请求相应模式,客户端向服务器发送一个请求,这里就会有个请求头,

包含:请求的方法、URL、协议文本、以及修饰符,客户信息等

 

   

通用头域

  通用头域包含请求和响应消息都支持的头域,通用头域包含Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头域,一般将会作为实体头域处理。下面简单介绍几个在UPnP消息中使用的通用头域。

Cache-Control头域

  Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。各个消息中的指令含义如下:

  Public指示响应可被任何缓存区缓存。

  Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户

  

http结构

的部分响应消息,此响应消息对于其他用户的请求无效。

  no-cache指示请求或响应消息不能缓存

  no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。

  max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。

  min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。

  max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。

   

Date头域

  Date头域表示消息发送的时间,时间的描述格式由rfc822定义。例如,Date:Mon,31Dec200104:25:57GMT。Date描述的时间表示世界标准时,换算成本地时间,需要知道用户所在的时区。

Pragma头域

  Pragma头域用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和Cache-Control:no-cache相同。

请求消息

  请求消息的第一行为下面的格式:

  MethodSPRequest-URISPHTTP-VersionCRLFMethod表示对于Request-URI完成的方法,这个字段是大小写敏感的,包括OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE。方法GET和HEAD应该被所有的通用WEB服务器支持,其他所有方法的实现是可选的。GET方法取回由Request-URI标识的信息。HEAD方法也是取回由Request-URI标识的信息,只是可以在响应时,不返回消息体。POST方法可以请求服务器接收包含在请求中的实体信息,可以用于提交表单,向新闻组、BBS、邮件群组和数据库发送消息。

  SP表示空格。Request-URI遵循URI格式,在此字段为星号(*)时,说明请求并不用于某个特定的资源地址,而是用于服务器本身。HTTP-Version表示支持的HTTP版本,例如为HTTP/1.1。CRLF表示换行回车符。请求头域允许客户端向服务器传递关于请求或者关于客户机的附加信

  

http架构

息。请求头域可能包含下列字段Accept、Accept-Charset、Accept-Encoding、Accept-Language、Authorization、From、Host、If-Modified-Since、If-Match、If-None-Match、If-Range、If-Range、If-Unmodified-Since、Max-Forwards、Proxy-Authorization、Range、Referer、User-Agent。对请求头域的扩展要求通讯双方都支持,如果存在不支持的请求头域,一般将会作为实体头域处理。

  典型的请求消息:

  Host: download.*******.de

  Accept: */*

  Pragma: no-cache

  Cache-Control: no-cache

  User-Agent: Mozilla/4.04[en](Win95;I;Nav)

  Range: bytes=554554-

  上例第一行表示HTTP客户端(可能是浏览器、下载程序)通过GET方法获得指定URL下的文件。棕色的部分表示请求头域的信息,绿色的部分表示通用头部分。

Host头域

  Host头域指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。

Referer头域

  Referer头域允许客户端指定请求uri的源资源地址,这可以允许服务器生成回退链表,可用来登陆、优化cache等。他也允许废除的或错误的连接由于维护的目的被追踪。如果请求的uri没有自己的uri地址,Referer不能被发送。如果指定的是部分uri地址,则此地址应该是一个相对地址

Range头域

  Range头域可以请求实体的一个或者多个子范围。例如,

  表示头500个字节:bytes=0-499

  表示第二个500字节:bytes=500-999

  表示最后500个字节:bytes=-500

  表示500字节以后的范围:bytes=500-

  第一个和最后一个字节:bytes=0-0,-1

  同时指定几个范围:bytes=500-600,601-999

  但是服务器可以忽略此请求头,如果无条件GET包含Range请求头,响应会以状态码206(PartialContent)返回而不是以200(OK)。

User-Agent头域

  User-Agent头域的内容包含发出请求的用户信息。

响应消息

  响应消息的第一行为下面的格式:

  HTTP-VersionSPStatus-CodeSPReason-PhraseCRLF

  HTTP-Version表示支持的HTTP版本,例如为HTTP/1.1。Status-Code是一个三个数字的结果代码。Reason-Phrase给Status-Code提供一个简单的文本描述。Status-Code主要用于机器自动识别,Reason-Phrase主要用于帮助用户理解。Status-Code的第一个数字定义响应的类别,后两个数字没有分类的作用。第一个数字可能取5个不同的值:

  1xx:信息响应类,表示接收到请求并且继续处理

  2xx:处理成功响应类,表示动作被成功接收、理解和接受

  3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理

  4xx:客户端错误,客户请求包含语法错误或者是不能正确执行

  5xx:服务端错误,服务器不能正确执行一个正确的请求

  响应头域允许服务器传递不能放在状态行的附加信息,这些域主要描述服务器的信息和Request-URI进一步的信息。响应头域包含Age、Location、Proxy-Authenticate、Public、Retry-After、Server、Vary、Warning、WWW-Authenticate。对响应头域的扩展要求通讯双方都支持,如果存在不支持的响应头域,一般将会作为实体头域处理。

  典型的响应消息:

  HTTP/1.0200OK

  Date:Mon,31Dec200104:25:57GMT

  Server:Apache/1.3.14(Unix)

  Content-type:text/html

  Last-modified:Tue,17Apr200106:46:28GMT

  Etag:"a030f020ac7c01:1e9f"

  Content-length:39725426

  Content-range:bytes55******/40279980

  上例第一行表示HTTP服务端响应一个GET方法。棕色的部分表示响应头域的信息,绿色的部分表示通用头部分,红色的部分表示实体头域的信息。

  Location响应头

  Location响应头用于重定向接收者到一个新URI地址。

  Server响应头

  Server响应头包含处理请求的原始服务器的软件信息。此域能包含多个产品标识和注释,产品标识一般按照重要性排序。

HTTP-运作方式

  HTTP协议是基于请求/响应范式的。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为,统一资源标识符、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

  许多HTTP通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理(UA)和源服务器(O)之间通过一个单独的连接来完成。

  当一个或多个中介出现在请求/响应链中时,情况就变得复杂一些。中介由三种:代理(Proxy)、网关(Gateway)和通道(Tunnel)。一个代理根据URI的绝对格式来接受请求,重写全部或部分消息,通过URI的标识把已格式化过的请求发送到服务器。网关是一个接收代理,作为一些其它服务器的上层,并且如果必须的话,可以把请求翻译给下层的服务器协议。一个通道作为不改变消息的两个连接之间的中继点。当通讯需要通过一个中介(例如:防火墙等)或者是中介不能识别消息的内容时,通道经常被使用.

    

实体:

     请求消息和响应消息都可以包含实体信息,实体信息一般由实体头域和实体组成。实体头域包含关于实体的原信息,实体头包括Allow、Content-Base、Content-Encoding、Content-Language、Content-

  

http运作方式的一种

Length、Content-Location、Content-MD5、Content-Range、Content-Type、Etag、Expires、Last-Modified、extension-header。extension-header允许客户端定义新的实体头,但是这些域可能无法被接受方识别。实体可以是一个经过编码的字节流,它的编码方式由Content-Encoding或Content-Type定义,它的长度由Content-Length或Content-Range定义。

    

实现文件下载需设置的两个特殊的响应头:

      1。 Content-Type :application/octet-stream(下载文件是excel则设置application/msexcel)  

    可以用:response.setContentType("application/msexcel;charset=UTF-8");

      2.Content-Dispostion:

         response.setHeader("Content-disposition", "attachment;filename=" + new String(fname.getBytes("GBK"), "ISO8859-1"));

分享到:
评论

相关推荐

    HTTP协议分析报告

    (2) 由于网页文档的传输需要可靠性的保证,所以HTTP协议使用TCP协议,TCP协议是一个面向连接的协议,在通信时需要建立连接,通信结束要释放连接,TCP建立连接时需要三次握手,提供可靠的数据传输,HTTP协议默认...

    深入理解HTTP协议

    深入理解HTTP协议

    http 协议解析类 c++

    能够处理http协议:(1)解析 (2)构造http格式

    网络协议TCP/IP实验七 HTTP 协议分析实验

    湘潭大学 网络协议TCP/IP实验七 HTTP 协议分析实验报告,仅供参考

    HTTP协议ppt HTTP协议ppt

    HTTP协议ppt

    HTTP协议详细解释

    HTTP协议

    http 协议

    http协议头 HTTP 请求和 HTTP 响应都使用头发送有关 HTTP 消息的信息。头由一系列行组成,每行都包含名称,然后依次是冒号、空格、值。字段可按任何顺序排列

    认清http协议本质

    认清http协议本质,可供参考博客: http://blog.csdn.net/u010661782/article/details/52714026

    HTTP协议详解.pdf

    在TCP/IP协议模型中, HTTP协议是在应用层使用的协议,他的作用是将我们需要发送的数据进行封装,然后通过下一层的层层传递发送给目的主机,目的主机会给他一个响应或者返回他查询的数据。应该是在我们开发的过程中...

    http协议详解

    由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 4.无连接:无连接的含义是限制每次连接只处理一个请求。...

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

    HTTP协议的主要特点可概括如下: 1.支持客户/服务器模式。 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP...

    http协议中文版(http协议中文版)

    http协议中文版,全面介绍了http协议,不可多得的好资料

    java实现http协议jar包

    java实现http协议jar包,是一个访问http协议工具类,导入全部jar包到项目里面,调用httpRequest方法及可实现http协议访问,以及获取代理IP方法封装

    c# HTTP协议的连接方式

    c# HTTP协议的连接方式------------------------------

    HTTP协议.zip_HTTP_HTTP协议

    精心整理的的http协议资料,比较简要,明确,完整

    HTTP协议详解_HTTP协议_

    HTTP协议详解 2010年 06月 22日

    面试中的HTTP协议

    详细讲解面试中的HTTP协议 详细讲解面试中的HTTP协议 详细讲解面试中的HTTP协议

    物联网项目实战开发之基于STM32+ESP8266WIFI通过HTTP协议接入中移OneNet云平台代码程序,支持WEB及APP

    2、通过HTTP协议接入平台,接收平台端下发的控制指令并动作。上报继电器状态及温湿度值。 3、代码使用KEIL开发,当前在STM32F103C8T6运行,如果是STM32F103其他型号芯片,依然适用,请自行更改KEIL芯片型号以及FLASH...

    HTTP协议超级详解.docx

    W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,定义了HTTP协议中现今广泛使用的一个版本——HTTP 1.1。

    HTTP协议详解及RFC2616(HTTP)中文版

    HTTP协议详解 RFC2616(HTTP)中文版 pdf 格式,高清

Global site tag (gtag.js) - Google Analytics