`
ccr1988
  • 浏览: 34574 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HTTP基础

    博客分类:
  • j2ee
阅读更多
HTTP的结构主要包括下面几个要点:
请求行与状态
通用信息
请求头
响应头
实体头
扩展头
HTTP的版本主要有1.0,1.1 和更高版本
   1.1 及以上版本允许在一个TCP连接上传送多个HTTP协议,1.0能 
   1.1 及以上版本多个请求和响应可以重叠,1.0不能
   1.1 增加了很多的请求头和响应头

请求消息的结构
    一个请求行,若干小心头,以及实体内容,其中的一些消息头和实体内容是可选的,消息头和实体内容需要空行隔开。
举例:
GET/music/musicTest.html  HTTP/1.1               -<------请求行
Accept:*/*                                      -<------消息头
Accept-Language: en-us                          -<------消息头
Connection: Keep-Alive                          -<------消息头
Host: LocatHost                                 -<------消息头
Referer: http://localhost/test.jsp              -<------消息头
User-Agent: Mozilla/4.0                         -<------消息头
Accept-Encoding: gzip,deflate                   -<------消息头
                                                        -<------一个空行
响应消息的结构
    一个状态行,若干个消息头,以及实体内容,其中的一些信息头和实体内容都是可选的,消息头和实体内容需要用空格隔开
举例:
   HTTP/1.1 200  OK                              -<------状态行
   Server: Microsoft-IIS/5.0                     -<------消息头
   Date: Thu,15 Jul 2012 05:14:32 GMT            -<------消息头
   Content-Length: 4500                          -<------消息头
   Content-Length: text/html                     -<------消息头
   Cache-control: private                        -<------消息头
                                                         -<------一个空行

   <HTML>                              -<------实体内容(网页将显示的内容)
   <BODY>
   。。。。。
注意点:
  一个使用GET 方式的请求消息中不能包含实体内容,只有使用POST,PUT或者DELETE方式的请求才可以包括实体内容

HTTP 消息头
   使用消息头可以实现HTTP客户机与服务器之间的条件请求和应答,消息头相当与服务器与浏览器之间的一些暗号请求
    消息头的格式: 头字段,冒号,空格,值,回车
    许多请求头字选允许客户端在值部分指定多个可接受的选项,多个选项之间用头号隔开
例如:Accept-Encoding: gzip,compress
有些头字段可以多次出现,例如,响应消息中可包含多个"Warning"

请求行
  格式:请求方式 资源路径  HTTP版本号〈CRLF〉
   举例:GET  /test.html  Http/1.1
  请求方式:Post Head,Options,Delete,Trace.Put,Get状态行
   格式:HTTP版本号 状态码 原因描述  〈CRLF〉
   举例: HTTP/1.1 200  OK    

   访问方式:  windows下 http 1.0(启动一个web服务器例如tomcat)

   cmd进入
   telnent  localhost  8080
   输入ctrl+]+回车
   输入GET  /工程名称/test.html   http/1.0
   2次回车
   返回下面:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
ETag: W/"480-1340419790000"
Last-Modified: Sat, 23 Jun 2012 02:49:50 GMT
Content-Type: text/html
Content-Length: 480
Date: Sat, 23 Jun 2012 03:04:36 GMT
Connection: close

<html>
.....
访问方式:  windows下 http 1.1

   cmd进入
   telnent  localhost  8080
   输入ctrl+]+回车
    输入GET /工程名称/test.html   http/1.0  回车
   输入Host: 回车
注意:在输入GET信息的时候出错了 不能修改 必须重新来一次 否则无法得到正确结果   


GET与POST
  1,get
       GET /工程名称/aaaservlet? firstname=fov&lastname=rui HTTP/1.1
       Host:
  2,post
       POST  /工程名称/servletURL HTTP/1.1
       Host:
       Content-Type: application/x-www-form-urlencoded
       Content-Length: 27
     
       firstname=fov&lastname=rui
响应状态码
    (1)100--199
        表示成功接受请求,要求客户端继续提交请求次能完成整个处理过程
    (2)200--299
        表示成功接受请求并已经完成整个处理过程
    (3)300-399
       为完成请求,客户需进一步细化请求,例如:请求资源已经移动到一个新的地址
    (4)400-499
       客户端的请求有错误
    (5)500-599
       服务器端出现错误
    经常遇见的错误例子:
     200(正常)
        表示一切正常,返回正确请求结果
     206(部分内容)
        客户端发多了一个带有Range头(要求服务器只返回文档中的部分内容)的GET请求,服务器按要求完整这个请求
     302/307(临时重定向)
       指出被请求的文档已被临时的移动到别处,此文档的新的URL在Location响应头中给出
     304(未修改)
        表示客户机缓存的版本是最新的,客户机应继续使用它
     401(未经授权)
        表示客户机访问的是一个受口令和密码保护的页面,结合使用一个WWW-Authenticate响应头提示客户机重新发一个带有Authorization头的消息请求
     404(找不到)
        服务器上不存在客户机所请求的资源
     500(内部服务错误)
       服务器端的CGI,JSP等程序发生的错误

通用消息头
     通用消息头字段能用于请求消息,也能够用于响应消息,它包括一些与被传输的实体内容没有关系的常用字段
     Cache-Control   <no-cache>--------(通知代理服务器,是否对缓存的信息进行最新) no-cache表示不需要缓存
     Connection      <colse>------------- (表示请求完只有的操作)
     Date                                        (表示HTTP消息产生的时间)
     Pragma             only<no-cache> (表示客户端不要缓存信息)        
     Trailer               Date                 (表示某字段位与位于实体内容的后面) 表示Date位于实体内容的后面   
     Transfer-Encoding  <chunked>   (指定实体部分传输编码)     
     Upgrade  HTTP/2.0  SHTTP/1.3  (表示协议的切换,允许服务器切换到某协议执行)
     Via  HTTP/1.1 Proxy1 HTTP/1.1 Proxy2 (表示规定代理服务器遵循的协议)
     Warning                                   (提高信息)
    例子:
       GET /工程名称/aaaservlet? firstname=fov&lastname=rui HTTP/1.1
       Host:
       Connection:close
请求头
    请求头字段用于客户端在请求消息中向服务器传递附加信息,主要包括客户端可以接受的数据类型,压缩方法,语言,以及发出请求的超链接所属网页的URL
    地址等信息。
    Accept: text/html,image/*
    Accept-Charset: ISO-8859-1,unicode-1-1    (服务器传输信息的编码信息)
    Accept-Encoding: gzip,compress                (服务器压缩编码)
    Accept-Laguage: en-gb,zh-cn                    ( 返回语言格式)
    Authorization:                                         ( 设置口令密码)
    Proxy-Authorization
    ......
    例子:
     telent www.google.cn
     GET /HTTP/1.1
     Host:
    Accept-Language: zh-cn
实体头
   用作实体内容的元信息,描述了实体的内容属性,包括实体信息类型,长度,压缩方法,最后一次修改时间,数据有效期等
    Allow:  GET,POST
    Content-Encoding: gzip
    Content-Language: zh-cn
    Content-Length: 90
    Content-Location: ..                   封装实体的位置
    Content-MD5:..                         对实体内容的MD5加密
    Content-Range: byte  2415-45664/8790   服务器返回部分实体的位置
    Content-type-Type: text/html,charset=GB3212   实体类型  [mime的类型方式]
    Expire                                                            过期时间
    Last-Modified                           文档最后更新时间

扩展头
   Refresh
    Refresh:  1                            多久再放送一次请求
    REfresh:  1;url=http://www.baidu.com    1秒后跳到www.baidu.com页
   Content-Disposition
    Content-Type: application/octet-stream
    Content-Disposition: attachment;filename=aaa.zip       
                      
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics