HTTP基础

标签: http 基础 | 发表时间:2012-06-23 18:54 | 作者:
出处:http://www.iteye.com
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       
                      

已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [http 基础] 推荐:

HTTP基础

- - ITeye博客
HTTP的结构主要包括下面几个要点:. HTTP的版本主要有1.0,1.1 和更高版本.    1.1 及以上版本允许在一个TCP连接上传送多个HTTP协议,1.0能 .    1.1 及以上版本多个请求和响应可以重叠,1.0不能.    1.1 增加了很多的请求头和响应头.     一个请求行,若干小心头,以及实体内容,其中的一些消息头和实体内容是可选的,消息头和实体内容需要空行隔开.

WPO基础:减少HTTP请求

- - 用户体验与可用性设计
减少HTML文档的组件数量,也因此减少了HTTP请求的数量,从而节约了载入网页的时间. 《高性能网站建设指南》中介绍到四种方法:. 采用CSS Sprites. 合并CSS样式表和JS脚本. 对于网店尤其是Zen-Cart网店来说,最后一种方法是很有效的. 因为Zen-Cart为了模块化和易读性考虑,将样式表和脚本分的很细,本来一个CSS文件搞掂的,可能会被划分成10个文件,并且分布在不同目录中.

web基础-web工作原理,http协议,浏览器缓存

- - 浏览器 - 互联网 - ITeye博客
4,cookie和session. 平时用浏览器,输入网址后回车,页面响应我们想要浏览的内容,简单操作的背后蕴涵了什么原理. 当输入url回车后,客户端(浏览器)会去请求DNS服务器,通过DNS获取域名对应的IP地址,然后通过这个地址找到对应的服务器,要求建立TCP连接,建立连接,客户端发送httpRequest(请求包)后,服务器接收并开始处理请求,调用自身服务,返回httpResponse(响应包),客户端收到响应包后开始渲染body主体,等到全部接收,断开与该服务器端的TCP连接.

HTTP Headers 入门

- johnny - Time Machine
非常感谢 @ytzong 同学在twitter上推荐这篇文章,原文在此. 本文系统的对HTTP Headers进行了简明易懂的阐述,我仅稍作笔记. 什么是HTTP Headers. HTTP是“Hypertext Transfer Protocol”的所写,整个万维网都在使用这种协议,几乎你在浏览器里看到的大部分内容都是通过http协议来传输的,比如这篇文章.

HTTP Header 详解

- - 博客园_Ruby's Louvre
HTTP(HyperTextTransferProtocol)即超文本传输协议,目前网页传输的的通用协议. HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应. 就整个网络资源传输而言,包括message-header和message-body两部分. 首先传递message- header,即 http header消息.

HTTP/2 in Netty

- -
Here, we created a context for the server with a JDK SSL provider, added a couple of ciphers, and configured the Application-Layer Protocol Negotiation for HTTP/2..

HTTP负载测试

- - 博客 - 伯乐在线
英文原文: ON HTTP LOAD TESTING 来源: oschina. 有很多人在谈论HTTP服务器软件的性能测试,也许是因为现在有太多的服务器选择. 这很好,但是我看到有人很多基本相同的问题,使得测试结果的推论值得怀疑. 在日常工作中花费了很多时间在高性能代理缓存和源站性能测试方面之后,这里有我认为比较重要的一些方面来分享.

HTTP断点续传

- - CSDN博客互联网推荐文章
要实现断点续传的功能,通常都需要客户端记录下当前的下载进度,并在需要续传的时候通知服务端本次需要下载的内容片段. HTTP1.1协议(RFC2616)中定义了断点续传相关的HTTP头 Range和Content-Range字段,一个最简单的断点续传实现大概如下:.   1.客户端下载一个1024K的文件,已经下载了其中512K.

http-kit 1.2 发布

- - 开源中国社区最新新闻
Http-kit 是主要由Java 和Clojure开发,为Clojure定制的零依赖的Http lib,包括异步的高性能HTTP Server 和 HTTP Client. 在普通的PC上进行性能测试时,http-kit server 每秒能处理数万个请求. 修复处理文件上传时,content-type没能正确处理.

HTTP缓存算法

- - PHP源码阅读,PHP设计模式,PHP学习笔记,项目管理-胖胖的空间
HTTP协议缓存的目标是去除许多情况下对于发送请求的需求和去除许多情况下发送完整请求的需求. 以不发送请求或减少请求传输的数据量来优化整个HTTP架构,此目标的实现可以产生如下好处:. 降低对原始服务器的请求量. 减少了传送距离,降低了因为距离而产生的时延. 缓存基本处理过程包括七个步骤. 接收 – 缓存从网络中读取抵达的请求报文.