HTML协议相关文档

HTTP 协议的相关文档

HTTP 协议 (Hypertext Transfer Protocol, 超文本传输协议 ) 是网络应用层的协议,建立在 TCP/IP 协议的基础上。 HTTP 协议使用可靠的 TCP 连接,默认端口是 80 HTTP 的第一个版本是 HTTP/0.9, 后来发展到了 HTTP/1.0, 现在是 HTTP/1.1 HTTP1.1 协议对应的 RFC 文档为 RFC2068

HTTP 协议基于客户 / 服务器模式,客户端主动发出 HTTP 请求,服务器接收 HTTP 请求,返回 HTTP 响应结果。 HTTP 协议对 HTTP 强求以及响应的格式做出了明确的规定。

HTTP 协议简介:

当用户打开浏览器,输入一个 URL 地址,就能接收到远程 HTTP 服务器发送过来的网页。浏览器就是最常见的 HTTP 客户程序。 HTTP 客户程序必须先发出一个 HTTP 请求,然后才能接收到来自 HTTP 服务器的响应。

 

HTTP 客户程序与 HTTP 服务器的通信过程

HTTP 协议简介:

HTTP 客户程序和 HTTP 服务器分别由不同的软件开发商提供的,它们都可以用任意的编程语言编写。用 VC 编写的 HTTP 客户程序能否与用 Java 编写的 HTTP 服务器顺利通信呢?答案是肯定的。

HTTP 协议严格规定了 HTTP 请求和 HTTP 响应的数据格式,只要 HTTP 服务器与客户程序都遵守 HTTP 协议,就能彼此看得懂对方发送的消息。

HTTP 请求格式:

HTTP 协议规定, HTTP 请求由三部分构成,分别是:

请求方法、 URI HTTP 协议的版本

请求头 (Request Header)

请求正文 (Request Content)

下面是一个 HTTP 请求的例子:

POST    /hello.html    HTTP/1.1

Accept:  image/gif,   image/jpeg,    */*

Referer:  http://localhost/login.htm

Accept-Language: en,  zh-cn;  q=0.5

Content-Type:   application/x-www-form-urlencoded

Accept-Encoding:   gzip,  deflate

User-Agent:   Mozilla/4.0(compatible;MSIE6.0;Windows NT 5.0)

 

Host:    localhost

Content-Length:   43

Connection:    Keep-Alive

Cache-Control:  no-cache

 

 

username=weiqin&password=1234&submit=submit

1.      请求方式、 URI HTTP 协议的版本

HTTP 请求的第一行包括请求方式、 URI 和协议版本这三项内容,以空格分开:

 

POST  /hello.html  HTTP/1.1

在以上代码中, POST ”标示请求方式,“ /hello.html ”标示 URI ,“ HTTP/1.1 , 标示 HTTP 协议的版本。

根据 HTTP 协议, HTTP 请求可以使用多种请求方式,主要包括:

GET

POST

PUT

DELETE

请求头 (Request Header)

请求头包含许多有关客户端环境和请求的正文信息。例如,请求头可以声明浏览器的类型,所用的语言,请求正文的类型,以及请求正文的长度。

 

Accept: image/gif, image/jpeg, */*

Referer: http://localhost/login.htm

Accept-Language: en,zh-cn;q=0.5   // 浏览器所用的语言

Content-Type: application/x-www-form-urlencoded     // 正文类型

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)   // 浏览器类型

Host: localhost   // 远程主机

Content-Length: 43   // 正文长度

Connection: Keep-Alive

Cache-Control: no-cache

 

 

 

 

请求正文( Request Content

n      HTTP 协议规定,请求头和请求正文之间必须以空行分割(即只有 CRLF 符号的行),这个空行非常重要,它表示请求头已经结束,接下来是请求正文。请求正文中可以包含客户以 POST 方式提交的表单数据:

username=weiqin&password=1234

 

n      在以上 HTTP 请求例子中,请求正文只有一行内容。在实际应用中, HTTP 请求的正文可以包含更多的内容。

 

 

 

 

HTTP 响应格式

 

HTTP 请求相似, HTTP 响应也由三部分构成,分别是:

HTTP 协议的版本、状态代码、描述

响应头( Response Header

响应正文( Response Content

 

下面是一个 HTTP 响应的例子

 

 

HTTP/1.1 200 OK

Server: nio/1.1

Content-type: text/html; charset=GBK

Content-length: 102

 

<html>

<head>

  <title>helloapp</title>

</head>

<body >

  <h1>hello</h1>

</body>

</html>

 

1 HTTP 协议的版本、状态代码、描述

n      HTTP 响应的第一行包括服务器使用的 HTTP 协议的版本、状态代码,以及对状态代码的描述,这三项内容之间以空格分割。在本例中,使用 HTTP1.1 协议,状态代码为 200 ,该状态代码表示服务器已经成功的处理了客户端发出的请求:

     HTTP/1.1 200 OK

n      状态代码是一个 3 位整数,以 1 2 3 4 5 开头:

n      1xx :信息提示,表示临时的响应。

n      2xx :响应成功,表明服务器成功的接收了客户端请求。

n      3xx :重定向。

n      4xx :客户端错误,表明客户端可能有问题。

n      5xx :服务器错误,表明服务器由于遇到某种错误而不能响应客户请求。

 

2 .响应头( Response Header

n      响应头也和请求头一样包含许多有用的信息,例如服务器类型、正文类型和正文长度等:

Server: nio/1.1    // 服务器类型

Content-type: text/html; charset=GBK   // 正文类型

Content-length: 102  // 正文长度

 

3 .响应正文( Response Content

n      响应正文就是服务器返回的具体的文档,最常见的是 HTML 网页:

<html>

<head>

  <title>helloapp</title>

</head>

<body >

  <h1>hello</h1>

</body>

</html>

n      HTTP 响应头与响应正文之间也必须用空行分隔。

HTTP1.0 的会话方式:

浏览器与 WEB 服务器的连接过程是短暂的,每次连接只处理一个请求和响应,对每一个页面的访问,浏览器与 WEB 服务器都要建立一次单独的连接。

浏览器到 WEB 服务器之间的所有通讯都是完全独立分开的请求和响应。

支持代理 .

浏览器访问多图网页的过程。

 

 

 

 

 

HTTP1.1 HTTP1.0 的比较

 

 

 

 

HTTP 消息:

响应消息的实体内容就是网页文件的内容,也就是在浏览器中使用查看源文件的方式所看到的内容。

一个使用 GET 方式的请求信息中不能包含实体内容,只有使用 POST PUT DELETE 方式的请求消息中才可以包含实体内容。

对于 HTTP1.1 来说,如果 HTTP 消息中包含实体内容,且没有采用 chuncked 传输编码方式,那么消息头部分必须包含内容长度的字段,否则,客户和服务器程序就无法知道实体内容到何时结束。

 

HTTP 协议中,还可以使用简单的请求消息和响应消息,它们都是没有消息头部分,简单的请求消息只能用于 GET 方式,且请求行中不用指定 HTTP 版本好,对于简单的请求消息,服务器返回简单的响应消息,简单的相应消息中只返回实体内容。

HTTP 消息头:

使用消息头,可以实现 HTTP 客户器与服务器之间的条件请求和应答,消息头相当于服务器和浏览器之间的一些暗号指令。

每个消息头包含一个头字段的名称,然后依次是冒号,空格,值,回车和换行符。

消息头字段名是不区分大小写,但习惯上将每个单词的第一个字母大写。

整个消息头部分中的各行消息头可按任何顺序排列。

消息头又可分为通用消息头,请求头,响应头,实体头等四类。

许多请求头字段都允许客户端在值部分指定多个可接受的选项,多个选项

                           

            

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值