HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。
通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。
1.http请求(Method Request-URI HTTP-Version CRLF)
请求行
GET/form.html http/1.1(crlf)
POST
HEAD(消息报头)
POST /reg.jsp http/1.1(crlf)
消息报头
(crlf)回车换行
form数据
典型的请求消息:
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-
2.http响应(HTTP-Version Status-Code Reason-Phrase CRLF)
状态行,消息报头,(ctlf)响应正文
典型的响应消息:
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/1.1 200 OK (CRLF)
1xx:信息响应类,表示接收到请求并且继续处理
2xx:处理成功响应类,表示动作被成功接收、理解和接受
3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx:客户端错误,客户请求包含语法错误或者是不能正确执行
5xx:服务端错误,服务器不能正确执行一个正确的请求
3.消息报头()
分类:普通报头、请求报头,响应报头,实体报头
名字+“:”+空格+值
普通报头:Cache-Control:no-cache
Pragma:no-cache
response.setHeader
请求报头:accept:image/gif text/html
Accept-Charset:gb2312
Accept-Encoding:gzip
Accept-Language:zh_cn
Authorization(401)
Host:www.sunxin.org:8080
User-Agent
响应报头:Location:http://www.sunxin.org
Server:Apache-Coy
www-authenticate:basic realm="basic auth test!"
实体报头:Content-Encoding:gzip
Content-Language:da
Content-Length:
Content-Type:text/html;charset=iso-8859-1
last-Modified:
Expires:过期时间日期
response.setDateHeader("Expires",0);浏览器不要缓存页面。
------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
HTTP报文共有两种通用类型:请求报文,响应报文。
(1)请求报文:包括请求行、首部,以及有时出现的主体。如图
请求行:包括请求类型、空格、URL、空格以及HTTP版本。
请求类型
(方法)
|
空
格
|
URL
|
空
格
|
HTTP版本
|
请求类型:此字段定义了几种不同方法的报文。
常用的几种方法:
1:GET:客户要从服务器读取文档时使用。
2:HEAD:当客户想得到关于文档的某些信息但并不是要这个文档时使用。
3:POST:当客户要给服务器提供某些信息时使用。
4:PUT:当客户将新的或更换的文档存储在服务器上时使用。
5:PATCH:和PUT相似,只不过这个请求只包含必须在现有文件中出现的差异清单。
6:COPY:当需要将文件复制到另一个位置时使用。
7:MOVE:当需要将文件移到另一个位置时使用。
8:DELETE:当需要将服务器上的文档移走时使用。
9:LINK:当需要创建从一个文档到另一个位置的链接时使用。
10:UNLINK:当需要删除由LINK方法创建的链接时使用。
11:OPTION:当客户向服务器询问到一些可用的选项时使用。
统一资源定位符(URL):4要素:方法、主机、端口、路径
方法:用来读取文档的协议。
主机:放置信息的计算机。计算机常使用”WWW”开始的别名。
端口:服务器的端口号,可选。
路径:放置文件的路径名。
(2)响应报文:包括状态行、首部、有时包括主体。
状态行:包括HTTP版本、空格、状态码、空格、状态短语。
状态码:
100系列:提供信息的;
200系列:指示成功的请求;
300系列:把客户重定向到另一个URL;
400系列:指示客户端差错;
500系列:指示服务器端差错。
状态短语:用来解释状态码。
OPTIONS
|
允许客户端查看服务器的性能
|
TRACE
|
用于测试,允许客户端查看消息的回收过程
|
|
|
分享到:
相关推荐
HTTP协议(Hypertext Transfer Protocol――超文本传输协议)浏览器端(客户端)向WEB服务器端访问页面的过程和HTTP协议报文的格式。 基于HTTP协议的客户机访问包括4个过程,分别是 建立TCP套接字连接 发送HTTP...
HTTP协议浅析(下): 使用HTTP协议实现通信,相关教程:http://blog.csdn.net/tennysonsky/article/details/53909564
浅析http协议、cookies和session机制、浏览器缓存.docx
HTTP协议是浏览器和服务器双方共同遵循的规范.是一种基于TCP/IP(传输层协议,相对应的有UDP)的"应用层协议" PS:TCP/UDP是广泛使用的网络通信协议,UDP协议具有不可靠性和不安全性, 相对来说TCP协议是基于连接和三次...
NULL 博文链接:https://baobeituping.iteye.com/blog/2398076
HTTP协议 HTTP请求: HTTP响应: 会话与会话状态: Cookie Session Cookie和Session的区别 HTTP协议 HTTP请求: Post /test.php HTTP/1.1 //请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的...
通常来说从HTTP协议切换WebSocket称为WebSocket握手。 浏览器发送一个请求到服务器,这表明它想开关从HTTP WebSocket协议。客户端通过升级标题表达的愿望,代码如下所示: 复制代码代码如下:GET ws://echo.websocket....
前一段在整理邮件的时候发现几年前和CDD老师交流时的一份邮件.下面是简单摘要:“从技术角度来说,无论哪一个阵营,跟新技术都是不可避免的,也是很累的,当然作为一个程序员来说,也是必须的。要想让技术的更新对...
本文对 SOAP 作了一个初步介绍,给出几个简单示例;接着比较 CORBA,DCOM/COM 与 SOAP 的联系与区别;然后浅析 SOAP 简单的理解为 RPC+HTTP+XML 时的运行机制;最后展现 SOAP 的前景。
曾在程序员上发表过《漫谈基于http协议的SOA架构》《浅析HTTP平台的安全稳定性架构》两篇文章,对基于HTTP协议的SOA架构有深入研究,在排查解决线上问题和故障方面有丰富的实践经验,擅于利用数据分析解决实际问题,...
phpsocketSocket位于TCP/IP协议的传输控制协议,提供客户-服务器模式的异步通信,即客户向服务器发出服务请求,服务器接收到请求后,提供相应的反馈或服务!我练习了一个最基本的例子: 使用并发起一个阻塞式(block...
在性能基础之浅谈常见接口性能压测一文中我们有简单介绍常见的RPC接口,本文将单篇详细介绍RPC框架。RPC(RemoteProcedureCall)—远程过程调用,它是一种...使用HTTP请求当然可以,但是可能会比较慢而且一些优化做的并
就像我们可以用HTTP(超文本传输协议)来访问一个网站一样,发送邮件要使用SMTP(简单邮件传输协议),SMTP也是一个建立在TCP(传输控制协议)提供的可靠数据传输服务的基础上的应用级协议,它规定了邮件的发送者...
它是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。 JSONP就像是JSON+Padding一样(Padding这里我们理解为填充),...
概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。 代码如下: URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.js ...
无论是超媒体还是超文本,使用的传输协议都是HTTP,这意味着超媒体可以被所有的浏览器所接受。而描述超媒体的类型我们使用MIME。MIME即Multipurpose Internet Mail Extensions,多用途互联网邮件扩展类型,MIME是一...
结合视频效果更好 ... 1. 初识Go语言 1 1.1 Go语言介绍 1 1.1.1 Go语言是什么 1 1.1.2 Go语言优势 1 ...1.1.3 Go适合用来做什么 2 ...12.1.1 网络协议 119 ...12.3.2 HTTP报文浅析 128 12.3.3 HTTP编程 134
ASP.NET 2.0 异步页面原理浅析 [1] [原] 自定义通用System.Web.UI.IHierarchicalDataSource简单实现 在 ASP.NET 2.0 中创建 Web 应用程序主题 ASP.NET 2.0 中的数据访问 ASP.NET 2.0:弃用 DataGrid 吧,有新的网格...