`

页面头信息资料

阅读更多
  • 要做下载单个图片和多个图片打包后下载功能,收集了一下页面头信息资料,归档备用。

 

ContentType
ContentType 属性指定响应的 HTTP 内容类型。如果未指定 ContentType,默认为 text/HTML。
语法
Response.ContentType [= ContentType ]
参数
ContentType 
描述内容类型的字符串。该字符串通常被格式化为类型/子类型,其中类型是常规内容范畴而子类为特定内容类型。有关支持内容类型的完整列表,请参阅 Web 浏览器文档或当前的 HTTP 规格说明。 
示例
下面的示例将内容类型设置为 Channel Definition Format(CDF)。
<% Response.ContentType = "application/x-cdf" %>
下面的示例将 ContentType 属性设置为其他的常见值。
<% Response.ContentType = "text/HTML" %>
<% Response.ContentType = "image/GIF" %>
<% Response.ContentType = "image/JPEG" %>
应用于
Response 对象 
关于详细的类型对应参看如下:
".*"="application/octet-stream"
".001"="application/x-001"
".301"="application/x-301"
".323"="text/h323"
".906"="application/x-906"
".907"="drawing/907"
".a11"="application/x-a11"
".acp"="audio/x-mei-aac"
".ai"="application/postscript"
".aif"="audio/aiff"
".aifc"="audio/aiff"
".aiff"="audio/aiff"
".anv"="application/x-anv"
".asa"="text/asa"
".asf"="video/x-ms-asf"
".asp"="text/asp"
".asx"="video/x-ms-asf"
".au"="audio/basic"
".avi"="video/avi"
".awf"="application/vnd.adobe.workflow"
".biz"="text/xml"
".bmp"="application/x-bmp"
".bot"="application/x-bot"
".c4t"="application/x-c4t"
".c90"="application/x-c90"
".cal"="application/x-cals"
".cat"="application/vnd.ms-pki.seccat"
".cdf"="application/x-netcdf"
".cdr"="application/x-cdr"
".cel"="application/x-cel"
".cer"="application/x-x509-ca-cert"
".cg4"="application/x-g4"
".cgm"="application/x-cgm"
".cit"="application/x-cit"
".class"="java/*"
".cml"="text/xml"
".cmp"="application/x-cmp"
".cmx"="application/x-cmx"
".cot"="application/x-cot"
".crl"="application/pkix-crl"
".crt"="application/x-x509-ca-cert"
".csi"="application/x-csi"
".css"="text/css"
".cut"="application/x-cut"
".dbf"="application/x-dbf"
".dbm"="application/x-dbm"
".dbx"="application/x-dbx"
".dcd"="text/xml"
".dcx"="application/x-dcx"
".der"="application/x-x509-ca-cert"
".dgn"="application/x-dgn"
".dib"="application/x-dib"
".dll"="application/x-msdownload"
".doc"="application/msword"
".dot"="application/msword"
".drw"="application/x-drw"
".dtd"="text/xml"
".dwf"="Model/vnd.dwf"
".dwf"="application/x-dwf"
".dwg"="application/x-dwg"
".dxb"="application/x-dxb"
".dxf"="application/x-dxf"
".edn"="application/vnd.adobe.edn"
".emf"="application/x-emf"
".eml"="message/rfc822"
".ent"="text/xml"
".epi"="application/x-epi"
".eps"="application/x-ps"
".eps"="application/postscript"
".etd"="application/x-ebx"
".exe"="application/x-msdownload"
".fax"="image/fax"
".fdf"="application/vnd.fdf"
".fif"="application/fractals"
".fo"="text/xml"
".frm"="application/x-frm"
".g4"="application/x-g4"
".gbr"="application/x-gbr"
".gcd"="application/x-gcd"
".gif"="image/gif"
".gl2"="application/x-gl2"
".gp4"="application/x-gp4"
".hgl"="application/x-hgl"
".hmr"="application/x-hmr"
".hpg"="application/x-hpgl"
".hpl"="application/x-hpl"
".hqx"="application/mac-binhex40"
".hrf"="application/x-hrf"
".hta"="application/hta"
".htc"="text/x-component"
".htm"="text/html"
".html"="text/html"
".htt"="text/webviewhtml"
".htx"="text/html"
".icb"="application/x-icb"
".ico"="image/x-icon"
".ico"="application/x-ico"
".iff"="application/x-iff"
".ig4"="application/x-g4"
".igs"="application/x-igs"
".iii"="application/x-iphone"
".img"="application/x-img"
".ins"="application/x-internet-signup"
".isp"="application/x-internet-signup"
".IVF"="video/x-ivf"
".java"="java/*"
".jfif"="image/jpeg"
".jpe"="image/jpeg"
".jpe"="application/x-jpe"
".jpeg"="image/jpeg"
".jpg"="image/jpeg"
".jpg"="application/x-jpg"
".js"="application/x-javascript"
".jsp"="text/html"
".la1"="audio/x-liquid-file"
".lar"="application/x-laplayer-reg"
".latex"="application/x-latex"
".lavs"="audio/x-liquid-secure"
".lbm"="application/x-lbm"
".lmsff"="audio/x-la-lms"
".ls"="application/x-javascript"
".ltr"="application/x-ltr"
".m1v"="video/x-mpeg"
".m2v"="video/x-mpeg"
".m3u"="audio/mpegurl"
".m4e"="video/mpeg4"
".mac"="application/x-mac"
".man"="application/x-troff-man"
".math"="text/xml"
".mdb"="application/msaccess"
".mdb"="application/x-mdb"
".mfp"="application/x-shockwave-flash"
".mht"="message/rfc822"
".mhtml"="message/rfc822"
".mi"="application/x-mi"
".mid"="audio/mid"
".midi"="audio/mid"
".mil"="application/x-mil"
".mml"="text/xml"
".mnd"="audio/x-musicnet-download"
".mns"="audio/x-musicnet-stream"
".mocha"="application/x-javascript"
".movie"="video/x-sgi-movie"
".mp1"="audio/mp1"
".mp2"="audio/mp2"
".mp2v"="video/mpeg"
".mp3"="audio/mp3"
".mp4"="video/mpeg4"
".mpa"="video/x-mpg"
".mpd"="application/vnd.ms-project"
".mpe"="video/x-mpeg"
".mpeg"="video/mpg"
".mpg"="video/mpg"
".mpga"="audio/rn-mpeg"
".mpp"="application/vnd.ms-project"
".mps"="video/x-mpeg"
".mpt"="application/vnd.ms-project"
".mpv"="video/mpg"
".mpv2"="video/mpeg"
".mpw"="application/vnd.ms-project"
".mpx"="application/vnd.ms-project"
".mtx"="text/xml"
".mxp"="application/x-mmxp"
".net"="image/pnetvue"
".nrf"="application/x-nrf"
".nws"="message/rfc822"
".odc"="text/x-ms-odc"
".out"="application/x-out"
".p10"="application/pkcs10"
".p12"="application/x-pkcs12"
".p7b"="application/x-pkcs7-certificates"
".p7c"="application/pkcs7-mime"
".p7m"="application/pkcs7-mime"
".p7r"="application/x-pkcs7-certreqresp"
".p7s"="application/pkcs7-signature"
".pc5"="application/x-pc5"
".pci"="application/x-pci"
".pcl"="application/x-pcl"
".pcx"="application/x-pcx"
".pdf"="application/pdf"
".pdf"="application/pdf"
".pdx"="application/vnd.adobe.pdx"
".pfx"="application/x-pkcs12"
".pgl"="application/x-pgl"
".pic"="application/x-pic"
".pko"="application/vnd.ms-pki.pko"
".pl"="application/x-perl"
".plg"="text/html"
".pls"="audio/scpls"
".plt"="application/x-plt"
".png"="image/png"
".png"="application/x-png"
".pot"="application/vnd.ms-powerpoint"
".ppa"="application/vnd.ms-powerpoint"
".ppm"="application/x-ppm"
".pps"="application/vnd.ms-powerpoint"
".ppt"="application/vnd.ms-powerpoint"
".ppt"="application/x-ppt"
".pr"="application/x-pr"
".prf"="application/pics-rules"
".prn"="application/x-prn"
".prt"="application/x-prt"
".ps"="application/x-ps"
".ps"="application/postscript"
".ptn"="application/x-ptn"
".pwz"="application/vnd.ms-powerpoint"
".r3t"="text/vnd.rn-realtext3d"
".ra"="audio/vnd.rn-realaudio"
".ram"="audio/x-pn-realaudio"
".ras"="application/x-ras"
".rat"="application/rat-file"
".rdf"="text/xml"
".rec"="application/vnd.rn-recording"
".red"="application/x-red"
".rgb"="application/x-rgb"
".rjs"="application/vnd.rn-realsystem-rjs"
".rjt"="application/vnd.rn-realsystem-rjt"
".rlc"="application/x-rlc"
".rle"="application/x-rle"
".rm"="application/vnd.rn-realmedia"
".rmf"="application/vnd.adobe.rmf"
".rmi"="audio/mid"
".rmj"="application/vnd.rn-realsystem-rmj"
".rmm"="audio/x-pn-realaudio"
".rmp"="application/vnd.rn-rn_music_package"
".rms"="application/vnd.rn-realmedia-secure"
".rmvb"="application/vnd.rn-realmedia-vbr"
".rmx"="application/vnd.rn-realsystem-rmx"
".rnx"="application/vnd.rn-realplayer"
".rp"="image/vnd.rn-realpix"
".rpm"="audio/x-pn-realaudio-plugin"
".rsml"="application/vnd.rn-rsml"
".rt"="text/vnd.rn-realtext"
".rtf"="application/msword"
".rtf"="application/x-rtf"
".rv"="video/vnd.rn-realvideo"
".sam"="application/x-sam"
".sat"="application/x-sat"
".sdp"="application/sdp"
".sdw"="application/x-sdw"
".sit"="application/x-stuffit"
".slb"="application/x-slb"
".sld"="application/x-sld"
".slk"="drawing/x-slk"
".smi"="application/smil"
".smil"="application/smil"
".smk"="application/x-smk"
".snd"="audio/basic"
".sol"="text/plain"
".sor"="text/plain"
".spc"="application/x-pkcs7-certificates"
".spl"="application/futuresplash"
".spp"="text/xml"
".ssm"="application/streamingmedia"
".sst"="application/vnd.ms-pki.certstore"
".stl"="application/vnd.ms-pki.stl"
".stm"="text/html"
".sty"="application/x-sty"
".svg"="text/xml"
".swf"="application/x-shockwave-flash"
".tdf"="application/x-tdf"
".tg4"="application/x-tg4"
".tga"="application/x-tga"
".tif"="image/tiff"
".tif"="application/x-tif"
".tiff"="image/tiff"
".tld"="text/xml"
".top"="drawing/x-top"
".torrent"="application/x-bittorrent"
".tsd"="text/xml"
".txt"="text/plain"
".uin"="application/x-icq"
".uls"="text/iuls"
".vcf"="text/x-vcard"
".vda"="application/x-vda"
".vdx"="application/vnd.visio"
".vml"="text/xml"
".vpg"="application/x-vpeg005"
".vsd"="application/vnd.visio"
".vsd"="application/x-vsd"
".vss"="application/vnd.visio"
".vst"="application/vnd.visio"
".vst"="application/x-vst"
".vsw"="application/vnd.visio"
".vsx"="application/vnd.visio"
".vtx"="application/vnd.visio"
".vxml"="text/xml"
".wav"="audio/wav"
".wax"="audio/x-ms-wax"
".wb1"="application/x-wb1"
".wb2"="application/x-wb2"
".wb3"="application/x-wb3"
".wbmp"="image/vnd.wap.wbmp"
".wiz"="application/msword"
".wk3"="application/x-wk3"
".wk4"="application/x-wk4"
".wkq"="application/x-wkq"
".wks"="application/x-wks"
".wm"="video/x-ms-wm"
".wma"="audio/x-ms-wma"
".wmd"="application/x-ms-wmd"
".wmf"="application/x-wmf"
".wml"="text/vnd.wap.wml"
".wmv"="video/x-ms-wmv"
".wmx"="video/x-ms-wmx"
".wmz"="application/x-ms-wmz"
".wp6"="application/x-wp6"
".wpd"="application/x-wpd"
".wpg"="application/x-wpg"
".wpl"="application/vnd.ms-wpl"
".wq1"="application/x-wq1"
".wr1"="application/x-wr1"
".wri"="application/x-wri"
".wrk"="application/x-wrk"
".ws"="application/x-ws"
".ws2"="application/x-ws"
".wsc"="text/scriptlet"
".wsdl"="text/xml"
".wvx"="video/x-ms-wvx"
".xdp"="application/vnd.adobe.xdp"
".xdr"="text/xml"
".xfd"="application/vnd.adobe.xfd"
".xfdf"="application/vnd.adobe.xfdf"
".xhtml"="text/html"
".xls"="application/vnd.ms-excel"
".xls"="application/x-xls"
".xlw"="application/x-xlw"
".xml"="text/xml"
".xpl"="audio/scpls"
".xq"="text/xml"
".xql"="text/xml"
".xquery"="text/xml"
".xsd"="text/xml"
".xsl"="text/xml"
".xslt"="text/xml"
".xwd"="application/x-xwd"
".x_b"="application/x-x_b"
".x_t"="application/x-x_t"

 

 

 

    http 头信息 精讲

     

     

    1. http 头信息详解

    HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详 细内容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修 饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实 体元信息以及可能的实体内容。

     

    通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起 始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名, 冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。

     

    通用头域

     

    通用头域包含请求和响应消息都支持的头域,通用头域包含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指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。

     

    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表示换行回车符。请求头域允许客户端向服务器传递关于请求或者关于客户机的附加 信息。请求头域可能包含下列字段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。对请求头域的扩展要求通讯双方都支持,如果存在不支持的请 求头域,一般将会作为实体头域处理。

     

    典型的请求消息:

     

    GET http://download.microtool.de:80/somedata.exe

    Host: download.microtool.de

    Accept:*/*

    Pragma: no-cache

    Cache-Control: no-cache

    Referer: http://download.microtool.de/

    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:bytes554554-40279979/40279980

     

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

     

    Location响应头

     

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

     

    Server响应头

     

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

     

    实体

     

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

     

    Content-Type实体头

     

    Content-Type实体头用于向接收方指示实体的介质类型,指定HEAD方法送到接收方的实体介质类型,或GET方法发送的请求介质类型 Content-Range实体头

     

    Content-Range实体头用于指定整个实体中的一部分的插入位置,他也指示了整个实体的长度。在服务器向客户返回一个部分响应,它必须描述响应覆盖的范围和整个实体长度。一般格式:

     

    Content-Range:bytes-unitSPfirst-byte-pos-last-byte-pos/entity-legth

     

    例 如,传送头500个字节次字段的形式:Content-Range:bytes0- 499/1234如果一个http消息包含此节(例如,对范围请求的响应或对一系列范围的重叠请求),Content-Range表示传送的范围, Content-Length表示实际传送的字节数。

     

    Last-modified实体头

     

    Last-modified实体头指定服务器上保存内容的最后修订时间。

     

     

    应答头

    说明

    Allow

    服务器支持哪些请求方法(如GET、POST等)。

    Content-Encoding

    文 档的编码(Encode)方法。只有在解码之后才可以得到Content-Type头指定的内容类型。利用gzip压缩文档能够显著地减少HTML文档的 下载 时间。Java的GZIPOutputStream可以很方便地进行gzip压缩,但只有Unix上的Netscape和Windows上的IE 4、IE 5才支持它。因此,Servlet应该通过查看Accept-Encoding头(即request.getHeader("Accept- Encoding"))检查浏览器是否支持gzip,为支持gzip的浏览器返回经gzip压缩的HTML页面,为其他浏览器返回普通页面。

    Content-Length

    表 示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。如果你想要利用持久连接的优势,可以把输出文档写入 ByteArrayOutputStram,完成后查看其大小,然后把该值放入Content-Length头,最后通过 byteArrayStream.writeTo(response.getOutputStream()发送内容。

    Content-Type

    表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式地指定为text/html。由于经常要设置Content-Type,因此HttpServletResponse提供了一个专用的方法setContentTyep。

    Date

    当前的GMT时间。你可以用setDateHeader来设置这个头以避免转换时间格式的麻烦。

    Expires

    应该在什么时候认为文档已经过期,从而不再缓存它?

    Last-Modified

    文 档的最后改动时间。客户可以通过If-Modified-Since请求头提供一个日期,该请求将被视为一个条件GET,只有改动时间迟于指定时间的文档 才会返回,否则返回一个304(Not Modified)状态。Last-Modified也可用setDateHeader方法来设置。

    Location

    表示客户应当到哪里去提取文档。Location通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法,该方法同时设置状态代码为302。

    Refresh

    表示浏览器应该在多少时间之后刷新文档,以秒计。除了刷新当前文档之外,你还可以通过setHeader("Refresh", "5; URL=http://host/path")让浏览器读取指定的页面

    注 意这种功能通常是通过设置HTML页面HEAD区的<META HTTP-EQUIV="Refresh" CONTENT="5;URL=http://host/path ">实现,这是因为,自动刷新或重定向对于那些不能使用CGI或Servlet的 HTML编写者十分重要。但是,对于Servlet来说,直接设置Refresh头更加方便。

     

    注意Refresh的意义是“N秒之后 刷新本页面或访问指定页面”,而不是“每隔N秒刷新本页面或访问指定页面”。因此,连续刷新要求每次都发送一个Refresh头,而发送204状态代码则 可以阻止浏览器继续刷新,不管是使用Refresh头还是<META HTTP-EQUIV="Refresh" ...>。

     

    注意Refresh头不属于HTTP 1.1正式规范的一部分,而是一个扩展,但Netscape和IE都支持它。

    Server

    服务器名字。Servlet一般不设置这个值,而是由Web服务器自己设置。

    Set-Cookie

    设置和页面关联的Cookie。Servlet不应使用response.setHeader("Set-Cookie", ...),而是应使用HttpServletResponse提供的专用方法addCookie。参见下文有关Cookie设置的讨论。

    WWW-Authenticate

    客 户应该在Authorization头中提供什么类型的授权信息?在包含401(Unauthorized)状态行的应答中这个头是必需的。例 如,response.setHeader("WWW-Authenticate", "BASIC realm=\"executives\"")。

    注意Servlet一般不进行这方面的处理,而是让Web服务器的专门机制来控制受密码保护页面的访问(例如.htaccess)。

     

     

    2.HTTP请求头概述  

     

    HTTP 客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者POST)。如有必要,客户程序还可以选择发送其他的请求头。大多数 请求头并不是必需的,但Content-Length除外。对于POST请求来说Content-Length必须出现。  

     

    下面是一些最常见的请求头:  

     

    Accept:浏览器可接受的MIME类型。  

    Accept-Charset:浏览器可接受的字符集。  

    Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的 下载 时间。  

    Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。  

    Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。  

    Connection: 表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少 下载 所需要的时间。要实现这一 点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入 ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。  

    Content-Length:表示请求消息正文的长度。  

    Cookie:这是最重要的请求 头信息 之一,参见后面《Cookie处理》一章中的讨论。  

    From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。  

    Host:初始URL中的主机和端口。  

    If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答。  

    Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。  

    Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。  

    User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。  

    UA-Pixels,UA-Color,UA-OS,UA-CPU:由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。  

    有关HTTP头完整、详细的说明,请参见 http://www.w3.org/Protocols/的HTTP规范  

     

    在Servlet 中读取请求头  

     

    在 Servlet中读取HTTP头是非常方便的,只需要调用一下HttpServletRequest的getHeader方法即可。如果客户请求中提供了 指定的 头信息 ,getHeader返回对应的字符串;否则,返回null。部分 头信息 经常要用到,它们有专用的访问方法:getCookies方法返回 Cookie头的内容,经解析后存放在Cookie对象的数组中,请参见后面有关Cookie章节的讨论;getAuthType和 getRemoteUser方法分别读取Authorization头中的一部分内容;getDateHeader和getIntHeader方法读取指 定的头,然后返回日期值或整数值。  

     

    除了读取指定的头之外,利用getHeaderNames还可以得到请求中所有头名字的一个Enumeration对象。  

     

    最 后,除了查看请求 头信息 之外,我们还可以从请求主命令行获得一些信息。getMethod方法返回请求方法,请求方法通常是GET或者POST,但也有可 能是HEAD、PUT或者DELETE。getRequestURI方法返回URI(URI是URL的从主机和端口之后到表单数据之前的那一部分)。 getRequestProtocol返回请求命令的第三部分,一般是“HTTP/1.0”或者“HTTP/1.1”。  

     

    实例:输出所有的请求头  

     

    下面的Servlet实例把所有接收到的请求头和它的值以表格的形式输出。另外,该Servlet还会输出主请求命令的三个部分:请求方法,URI,协议/版本。  

     

    ShowRequestHeaders.java  

     

    package hall;

     

    import java.io.*;

    import javax.servlet.*;

    import javax.servlet.http.*;

    import java.util.*;

     

    public class ShowRequestHeaders extends HttpServlet {

    public void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException {

    response.setContentType("text/html");

    PrintWriter out = response.getWriter();

    String title = "显示所有请求头";

    out.println(ServletUtilities.headWithTitle(title) +

    "<BODY BGCOLOR=\"#FDF5E6\">\n" +

    "<H1 ALIGN=CENTER>" + title + "</H1>\n" +

    "<B>Request Method: </B>" +

    request.getMethod() + "<BR>\n" +

    "<B>Request URI: </B>" +

    request.getRequestURI() + "<BR>\n" +

    "<B>Request Protocol: </B>" +

    request.getProtocol() + "<BR><BR>\n" +

    "<TABLE BORDER=1 ALIGN=CENTER>\n" +

    "<TR BGCOLOR=\"#FFAD00\">\n" +

    "<TH>Header Name<TH>Header Value");

    Enumeration headerNames = request.getHeaderNames();

    while(headerNames.hasMoreElements()) {

    String headerName = (String)headerNames.nextElement();

    out.println("<TR><TD>" + headerName);

    out.println(" <TD>" + request.getHeader(headerName));

    }

    out.println("</TABLE>\n</BODY></HTML>");

    }

     

    public void doPost(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException {

    doGet(request, response);

    }

    }  

    3.

     

    HTTP请求模型和 头信息

     

    HTTP请求模型

     

    一、连接至Web服务器

    一个客户端应用(如Web浏览器)打开到Web服务器的HTTP端口的一个套接字(缺省为80)。

     

    例如:http://www.myweb.com:8080/index.html

    在Java中,这将等同于代码:

    Soceet  socket=new Socket(" www.myweb.com",8080 );

    InputStream  in=socket.getInputStream();

    OutputStream  out=socket.getOutputStream();

     

    二、发送HTTP请求

          通过连接,客户端写一个 ASCII 文本请求行,后跟 0 或多个 HTTP 头标,一个空行和实现请求的任意数据。

     

    一个请求由四个部分组成:请求行、请求头标、空行和请求数据

     

    1.请求行:请求行由三个标记组成:请求方法、请求URI和HTTP版本,它们用空格分隔。

    例如:GET  /index.html HTTP/1.1

     

    HTTP规范定义了8种可能的请求方法:

    GET                   检索 URI 中标识资源的一个简单请求

    HEAD                 GET 方法相同,服务器只返回状态行和头标,并不返回请求文档

    POST                  服务器接受被写入客户端输出流中的数据的请求

    PUT                   服务器保存请求数据作为指定 URI 新内容的请求

    DELETE              服务器删除 URI 中命名的资源的请求

    OPTIONS            关于服务器支持的请求方法信息的请求

    TRACE              Web 服务器反馈 Http 请求和其头标的请求

    CONNECT          已文档化但当前未实现的一个方法,预留做隧道处理

     

    2.请求头标:由关键字/值对组成,每行一对,关键字和值用冒号(:)分隔。请求头标通知服务器有关于客户端的功能和标识,典型的请求头标有:

     

    User-Agent          客户端厂家和版本

    Accept              客户端可识别的内容类型列表

    Content-Length      附加到请求的数据字节数

     

    3.空行:最后一个请求头标之后是一个空行,发送回车符和退行,通知服务器以下不再有头标。

    4.请求数据:使用POST传送数据,最常使用的是Content-Type和Content-Length头标。

     

    三、服务端接受请求并返回HTTP响应

    Web服务器解析请求,定位指定资源。服务器将资源副本写至套接字,在此处由客户端读取。

     

    一个响应由四个部分组成;状态行、响应头标、空行、响应数据

     

    1.状态行:状态行由三个标记组成:HTTP版本、响应代码和响应描述。

    HTTP版本:向客户端指明其可理解的最高版本。

    响应代码:3位的数字代码,指出请求的成功或失败,如果失败则指出原因。

    响应描述:为响应代码的可读性解释。

    例如:HTTP/1.1  200 OK

     

    HTTP响应码:

    1xx:信息,请求收到,继续处理

    2xx:成功,行为被成功地接受、理解和采纳

    3xx:重定向,为了完成请求,必须进一步执行的动作

    4xx:客户端错误:

    2.响应头标:像请求头标一样,它们指出服务器的功能,标识出响应数据的细节。

    3.空行:最后一个响应头标之后是一个空行,发送回车符和退行,表明服务器以下不再有头标。

    4.响应数据:HTML文档和图像等,也就是HTML本身。

     

    四、服务器关闭连接,浏览器解析响应

    1.浏览器首先解析状态行,查看表明请求是否成功的状态代码。

    2.然后解析每一个响应头标,头标告知以下为若干字节的HTML。

    3.读取响应数据HTML,根据HTML的语法和语义对其进行格式化,并在浏览器窗口中显示它。

    4.一个HTML文档可能包含其它需要被载入的资源引用,浏览器识别这些引用,对其它的资源再进行额外的请求,此过程循环多次。

     

    五、无状态连接

     

分享到:
评论

相关推荐

    个人资料页面设置

    在Android系统中,个人资料页面是用户展示自我、管理个人信息的重要区域。这个界面通常包括头像、昵称、联系方式、生日、性别等基本元素,有时也会包含其他自定义选项,如兴趣爱好、职业等。本篇文章将深入探讨如何...

    HTML 个人信息/个人简历页面(静态)

    在这个个人简历页面中,div可能被用作分隔不同部分,如头部、主体内容、底部版权等,通过设置div的CSS属性(如宽度、高度、内边距、外边距),可以实现内容区域的划分和间距控制。 在项目中,开发者可能还运用了...

    HTML新浪微博资料修改页面源代码

    在微博资料修改页面,可能会有`&lt;input&gt;`标签用于文本输入(如昵称、简介)、`&lt;select&gt;`用于下拉选择(如性别选择)、`&lt;textarea&gt;`用于多行文本输入(如个人简介)等。 4. **按钮与链接**:`&lt;button&gt;`和`&lt;a&gt;`标签...

    个人中心页面资料

    在IT行业中,个人中心页面是移动应用或网站中不可或缺的一部分,它为用户提供了一种管理和查看自己账户信息的途径。这个“个人中心页面资料”可能包含了关于如何设计、实现和优化一个高效、用户友好的个人中心页面的...

    个人信息-VUE模板 UNIAPP模板 布局、样式、JS分离

    【个人信息-VUE模板-UNIAPP模板】是一个用于构建个人资料页面的应用模板,适用于Vue.js和UniApp框架。这个模板提供了完整的布局结构,包括头像、姓名、身份证、手机号码和科室岗位等常见个人信息字段,方便开发者...

    Discuz! X1.5个人信息美化

    X1.5版本中,个人信息美化主要是对用户的个人资料页面进行视觉和交互上的改进,以提高用户体验和社区互动性。 首先,个人信息美化涉及到前端设计和CSS样式调整。CSS(层叠样式表)是网页设计中用于控制布局和样式...

    404页面源码.rar

    3. **头部信息**:`&lt;head&gt;`标签内的信息不直接展示在页面上,但对网页的运行至关重要,如`&lt;title&gt;`定义页面标题,`&lt;meta&gt;`设置元信息,`&lt;link&gt;`引入外部样式表等。 4. **主体内容**:`&lt;body&gt;`标签内的代码决定了404...

    头部代码资料

    根据给定的文件信息,我们可以深入探讨与“头部代码资料”相关的知识点,主要聚焦于HTML头部元素、行为脚本的应用以及网页导航优化等关键领域。 ### HTML头部元素及其作用 在网页开发中,“头部代码资料”通常指的...

    HTML精品商城页面,可直接书写页面

    总之,这个“HTML精品商城页面”项目不仅是一个实用的工具,也是一份宝贵的学习资料,通过它,你可以深入了解HTML在实际项目中的应用,提升Web开发技能。无论是对网页布局的理解,还是对前端交互的实践,都将有极大...

    图书信息管理系统静态页面制作.doc

    图书信息管理系统静态页面制作 图书信息管理系统静态页面制作是指基于Web技术的图书信息管理系统的静态页面设计和实现。静态页面是指不包含服务器端编程语言的网页,仅包含 HTML、CSS、JavaScript 等客户端脚本...

    学生信息管理系统jsp页面

    4,分5个版块:[学生资料管理] [学生成绩管理] [系统设置] [查询与报表] [操作员管理] [退出] 使用说明: 程序含3个文件夹,1个是CSS,1个是图片,1个JSP安装配置,使用起来很简单的 有什么问题,到...

    jsp生成静态页面资料.rar

    - **Sitemesh**:一个用于页面布局的框架,可以将JSP页面的头部、底部等公共部分提取出来,便于生成统一的静态页面。 - **Freemarker** 或 **Velocity**:这些模板引擎可以替代JSP,生成静态HTML,它们通常比JSP更...

    案例--个人信息页面.rar

    个人信息页面是网站或应用程序中常见的一个模块,它通常用于展示和管理用户的基本资料、账号设置以及与用户账户相关的其他信息。下面将详细讨论这个主题中的几个关键知识点。 1. **用户界面设计**:个人信息页面的...

    交友系统所需的静态页面.zip

    2. `userDetail.html`:这可能是用户个人资料页面,展示用户的详细信息,例如姓名、年龄、性别、兴趣爱好等。用户可能可以编辑这些信息,其他用户也可能能查看这些信息以了解潜在的朋友。 3. `login.html`:登录...

    微博之我页面和个人中心页面的开发

    "我"页面通常展示用户的个人资料,包括头像、昵称、简介、粉丝数、关注数等基本信息。此外,它还可能包含用户的动态更新、个人相册、收藏、设置等模块。个人中心页面则是用户关注的人或者机构的展示,这里会有对方的...

    phpind8.7 html页面文件说明

    - **描述**:此页面主要展示网站或社区正在进行的各项活动信息。 - **功能点**: - 显示活动标题、简介、时间、参与方式等详细信息。 - 可能包含活动报名表单,用户可以在此填写个人信息报名参加活动。 #### 2. *...

    北京工商企业信息查询页面抓取

    在信息技术领域,"北京工商企业信息查询页面抓取"涉及到了网页数据抓取(Web Scraping)这一技术,主要用于从互联网上自动收集特定类型的信息,例如企业注册信息、工商登记资料等。在这个场景中,目标是获取北京地区...

    web页面设计规范

    - **Head**:页面头部,通常包含Logo、标题等信息。 - **Main**:主要内容区域,承载页面的主要功能与信息。 - **Foot**:页面底部,常用作放置版权信息、联系方式等。 - **Menu**:导航栏,辅助用户快速定位所需...

    个人资料:我的个人资料页面

    "个人资料:我的个人资料页面"这个标题表明我们正在讨论一个用于呈现个人信息的网站或应用页面。通常,这样的页面会包含个人简介、工作经历、教育背景、项目作品以及联系方式等元素。描述中的"这是我的目标网页的...

    初级页面资料。。

    头部包含元信息,如字符编码、样式表链接等;主体则是网页的可视内容;声明告诉浏览器文档使用的HTML版本。 2. HTML 标签: - `&lt;html&gt;`:整个HTML文档的根元素。 - `&lt;head&gt;`:包含文档元数据,如标题(`&lt;title&gt;`...

Global site tag (gtag.js) - Google Analytics