`
阅读更多

http请求由3部分组成
1 请求行
2 消息报头
3 请求正文

----------------------
请求行
以一个方法符号开头(get,post),后面跟着请求URI和协议的版本,
CRLF以(回车换行)。以空格分隔,除了结尾的CRLF不允许出现单独的CRL或LF字符。
格式如下:
Method Request-URI HTTP-Version CRLF

Method 方法符号
Request-URI 统一资源标识符
HTTP-Version HTTP协议版本

例如:
GET /index.html HTTP/1.1 (CRLF)

下面是访问163时的请求消息
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 1.1.4322; aff-kingsoft-ciba)
Host: www.163.com
Connection: Keep-Alive
Cookie: USERTRACK=124.207.43.178.1239972143833795
------------------------
HTTP    请求的8种方法(区分大小写)
GET     请求获取由request-URI所标识的资源
POST    在request-URI所标识的资源后附加新的数据
HEAD    请求获取由request-URI所标识的资源的响应消息报头
      不必传输整个资源内容,用于测试超链接的有效性,是否可访问。
PUT     请求服务器存储一个资源
DELETE  请求删除由request-URI所标识的资源
TRACE   请求服务器送回收到的请求信息,主要用于测试和诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

-----------------------------
-----------------------------


HTTP响应由三部分组成
1 状态行
2 消息报头
3 响应正文

---------------------------------
状态行
由协议版本,数字形式的状态代码,及状态描述,用空格分隔,除了
结尾的(CRLF)不允许出现CR 或LF字符。

格式如下:
HTTP-Version Status-code Reason-Phrase (CRLF)

HTTP-Version :HTTP协议的版本
Struts-Code: 状态码
Reason-Phrase:状态码的文本描述

例如:
HTTP/1.1 200 OK (CRLF)

下面是请求163首页后得到的响应消息
HTTP/1.0 200 OK
Server: nginx/0.7.22
Date: Mon, 20 Apr 2009 09:13:26 GMT
Content-Type: text/html; charset=GBK
Vary: Accept-Encoding
Expires: Mon, 20 Apr 2009 09:14:46 GMT
Cache-Control: max-age=80
Content-Encoding: gzip
Age: 4
X-Cache: HIT from cache.163.com
Via: 192.168.51.74.nginx, 1.0 cache.163.com (squid/3.0.STABLE13)
Connection: close

响应正文略。。。

---------------------------------
状态代码:
1**  指示信息-表示请求已接收,继续处理
2**  成功
3**  重定向-要完成请求必须进行更进一步的操作
4**  客户端错误
5**  服务器端错误

---------------------------------
消息报头包括
1 普通报头
2 请求报头
3 响应报头
4 实体报头

每一个报头都是由 名字:(空格)值 组成。名字大小写无关
----------------------------------

普通报头

Cache-Control 普通报头域用于指定缓存指令,可用于请求与响应中。缓存指令是单向的
请求中的缓存指令,不影响到响应中的缓存设置。
一个请求中的缓存指令,不影响另一个请求的缓存设置。

请求时的缓存指令有:no-cache,no-store,max-age,max-stale,min-fresh,only-if-cache
响应时的缓存指令有:public,private,no-cache,no-store,no-transform,must-revalidate,proxy-revalidate,max-age,s-maxage
其中最常用的是 no-cache  用于指示不缓存请求或响应消息

让浏览器不缓存页面,可以在服务器端的servlet写如下代码:
response.setHeader("Cache-Control","no-cache");

Date普通报头表示消息产生的日期,可用于请求与响应中。

Connection 普通报头指示连接是持续的,关闭的  如:Connection: Keep-Alive

-------------------------------------------------------

请求报头

Accept  指定客户端接受哪些类型的信息
Accept-Charset 客户端接受的字符集
Host  必须的
User-Agent: 你的操作系统信息,浏览器信息。

-----------------------------------------

响应报头

Location 让客户端重定向到新位置
Server   服务器软件信息


-------------------------------------

实体报头
Content-Encoding
Content-Language
Content-Length  实体正文的长度,不包括实体报头
Content-Type  发送给接收者的实体正文的类型
Last-Modified 资源的最后修改时间
Expires       响应过期的日期和时间

------------------------------------
参考 RFC2616

分享到:
评论

相关推荐

    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