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协议作为研究对象,通过对HTTP协议的深入剖析,使学生能够掌握HTTP协议的基本原理、报文格式以及其工作流程。 #### 实验环境配置 - **操作系统**:Windows 7 - **网络平台**:实验室内部...
要认清HTTP协议的本质,我们需要从以下几个关键点入手: 1. 请求与响应模型:HTTP通信基于请求-响应模型。客户端发起一个HTTP请求到服务器,服务器处理请求并返回一个HTTP响应。请求由方法(如GET、POST)、URL、...
pb通过http协议传json; pb通过http协议传json; pb通过http协议传json; pb通过http协议传json; pb通过http协议传json; pb通过http协议传json; pb通过http协议传json; pb通过http协议传json; pb通过http协议传json; pb...
HTTP协议和TCP协议pcap数据包下载,支持抓包软件(如:wireshark)打开并学习HTTP协议和TCP协议报文解析。需要其他协议,请查看我发布的其他资源。
**HTTP协议详解** HTTP(Hypertext Transfer Protocol)超文本传输协议是互联网上应用最广泛的一种网络协议。它定义了客户端(通常是Web浏览器)与服务器之间的通信格式,用于从万维网服务器传输超文本到本地浏览器...
HTTP协议的工作原理: 1. 请求过程:当用户在浏览器中输入URL并按下回车键时,浏览器作为客户端(Client)构造一个HTTP请求报文,包括方法(GET、POST等)、URL、协议版本、头部信息和请求主体(如果有的话)。然后...
在IT行业中,串口通信和HTTP协议是两个重要的领域,它们在各种硬件设备与网络服务之间建立起连接。本文将深入探讨如何将串口数据转换为HTTP协议数据,并将其发送到云端,以及源码软件的跨平台特性。 串口通信,也...
HTTP 协议详解 HTTP 协议是一种应用层面的、面向对象的协议,用于分布式超媒体信息系统。它于 1990 年提出,经过多年的发展和完善,目前在 WWW 中使用的是 HTTP/1.0 的第六版,HTTP/1.1 的规范化工作正在进行中。 ...
**HTTP协议详解** HTTP(Hypertext Transfer Protocol)超文本传输协议是互联网上应用最广泛的一种网络协议。它是用于从万维网服务器传输超文本到本地浏览器的传输协议,是Web应用的基础。HTTP协议定义了客户端...
1. **无状态**:HTTP协议自身不维护连接状态,每次请求和响应都是独立的,服务器不会记住之前请求的信息。为了实现状态保持,开发者通常会使用Cookie或Session。 2. **简单快速**:设计时主要考虑快速传输,对数据...
HTTP协议分析工具能够帮助我们深入理解HTTP通信过程,包括请求方法、状态码、头部信息、请求体和响应体等关键元素。 首先,让我们看看JavaScript。JavaScript是一种轻量级的解释性编程语言,常用于网页和网络应用...
本次实验是关于计算机网络原理的Wireshark工具使用,主要目标是对HTTP协议进行深入分析。实验过程中,我们使用Wireshark对电脑的WLAN端口进行抓包,观察并解析访问www.baidu.com网站时的网络通信过程。通过对HTTP...
HTTP协议详解电子书 HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,它的设计目的是为了传输数据,并且使数据交换变得简单、高效。HTTP协议是基于TCP/IP通信协议来传输数据的,主要负责客户端...
基于STM32f103 http协议历程
串口转HTTP协议发送数据工具源码是一种实用的软件解决方案,它允许用户将从串行端口(串口)接收到的数据转换为HTTP协议格式,然后发送到预设的云端HTTP服务器。这种工具在物联网(IoT)和嵌入式系统中特别有用,...
本文将深入探讨基于HTTP协议的自定义协议封装,特别是在使用XML作为数据载体时如何进行设计和实现。HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,它允许客户端(如浏览器)和服务器之间交换数据。...
本篇将基于提供的标题和描述,深入探讨HTTP协议的基本概念、主要特性以及RFC文档的相关知识。 首先,RFC(Request for Comments)是互联网工程任务组(IETF)发布的技术规范,用于记录和传播互联网相关的协议、标准...
深入理解HTTP协议