http协议请求响应详解

Wesley13
• 阅读 768

http协议请求响应详解

一、http协议简介

HTTP是HyperText TransferProtocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程及数据本身的格式。

二、HTTP1.0的基本运行方式

1、基于HTTP协议的客户/服务器模式的信息交换过程,如图所示,

http协议请求响应详解

它分四个过程,建立连接、发送请求信息、发送响应信息、关闭连接。

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

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

三、HTTP1.1的特点

1、在一个TCP连接上可以传送多个HTTP请求和响应。

2、多个请求和响应过程可以重叠

3、增加了更多的请求头和响应头,比如Host、If-Unmodified-Since请求头等

http协议请求响应详解

四、HTTP请求消息

1、客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。

2、一个完整的HTTP请求包括如下内容:

一个请求行、若干消息头、以及请求正文,其中的一些消息头和正文都是可选的,消息头和正文内容之间要用空行隔开。

五、HTTP响应消息

1、一个HTTP响应代表服务器向客户端回送的数据。

2、一个完整的HTTP响应包括如下内容:

一个状态行、若干消息头、以及响应正文,其中的一些消息头和正文都是可选的,消息头和正文内容之间要用空行隔开。

六、HTTP消息头(请求和响应都有)

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

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

a)        如: Accept-Encoding: gzip, deflate

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

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

5、   消息头又可分为通用信息头、请求头、响应头、实体头等四类

6、   许多请求头字段都允许客户端在值部分指定多个可接受的选项,多个选项之间以逗号分隔。

7、   有些头字段可以出现多次,例如,响应消息中可以包含有多个”Warning”头字段。

七、HTTP请求的细节

7.1 Http请求行

1、   格式:请求方式资源路径 HTTP版本号

举例:GET/temp3o116.shtml HTTP/1.1

2、   请求方式:GET、POST、HEAD、OPTIONS、DELETE、TRACE、PUT

3、   用户如没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输地址访问,点超链接访问等都是get,用户如想把请求方式改为post,可通过更改表单的提交方式实现。

4、   不管POST或GET,都用于向服务器请求某个WEB资源,这两种方式的区别主要表现在数据传递上。

1)        GET方式

如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如:

GET/mail/1.html?name=abc&password=xyz HTTP/1.1

GET方式的特点:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K

2)        POST方式

如请求方式为POST方式,则可以在请求的正文内容中向服务器发送数据,Post方式的特点:传送的数据量无限制。

7.2 http请求头

http请求头简介:请求头字段用于客户端在请求消息中向服务器传递附加信息,主要包括客户端可以接受的数据类型、压缩方法、语言以及发出请求的超链接所属页面的URL地址等信息。

1、  常用请求头:

a)        Accept:浏览器可接受的MIME类型

b)        Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集

c)        Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip

d)        Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。可以在浏览器中进行设置。

e)        Host:初始URL中的主机和端口

f)         Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面

g)        Content-Type:内容类型

h)        If-Modified-Since: Wed, 02 Feb2011 12:04:56 GMT利用这个头与服务器的文件进行比对,如果一致,则从缓存中直接读取文件。

i)          User-Agent:浏览器类型.

j)          Content-Length:表示请求消息正文的长度

k)        Connection:表示是否需要持久连接。如果服务器看到这里的值为“Keep -Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接

l)          Cookie:这是最重要的请求头信息之一

m)      Date:Date: Mon,22 Aug 2011 01:55:39 GMT请求时间GMT

7.3 http响应 -- 状态行

         _HTTP版本号 状态码 原因叙述_注:回车换行符

         状态码用于表示服务器对请求的各种不同处理结果和状态,它是一个三位的十进制数。响应状态码分为5类,使用最高位为1到5来进行分类如下所示:

状态码

含义

100~199

表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程

200~299

表示成功接收请求并已完成整个处理过程

300~399

为完成请求,客户需进一步细化请求。例如,请求的资源已经移动一个新地址

400~499

客户端的请求有错误

500~599

服务器端出现错误

1、 http相应状态行—常用状态码

1)        200(正常)

a)        表示一切正常,返回的是正常请求结果

2)        302/307(临时重定向)

a)        指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出。

3)        304(未修改)

a)        表示客户机缓存的版本是最新的,客户机可以继续使用它,无需到服务器请求。

4)        404(找不到)

a)        服务器上不存在客户机所请求的资源。

5)        500(服务器内部错误)

a)        服务器端的程序发生错误

2、http--响应头

响应头字段用于向客户端传递附加信息

1)      常用响应头

a)      Location:http://www.it315.org/index.jsp指示新的资源的位置

b)      Server:apache tomcat指示服务器的类型

c)      Content-Encoding: gzip服务器发送的数据采用的编码类型

d)      Content-Length: 80 告诉浏览器正文的长度

e)      Content-Language: zh-cn服务发送的文本的语言

f)       Content-Type: text/html;charset=GB2312服务器发送的内容的MIME类型

g)      Last-Modified: Tue, 11 Jul 200018:23:51 GMT文件的最后修改时间

h)      Refresh:1;url=http://www.it315.org指示客户端刷新频率。单位是秒

i)        Content-Disposition:attachment; filename=aaa.zip指示客户端下载文件

j)        Set-Cookie:SS=Q0=5Lb_nQ;path=/search服务器端发送的Cookie

k)      Expires: -1

l)        Cache-Control: no-cache (1.1) 

m)    Pragma: no-cache   (1.0)

Expires,Cache-Control,Pragma 配合使用户使浏览器不缓存网页

n)      Connection:close/Keep-Alive  

o)      Date: Tue, 11 Jul 2000 18:23:51GMT

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
海军 海军
3年前
5分钟快速梳理你的HTTP体系
HTTP定义1.HTTP(超文本传输协议)是客户端与服务端之间信息交流的桥梁。2.在信息交流之前必须要做的就是客户端通过连接TCP/IP协议80端口,以便服务端侦听HTTP请求。3.HTTP是一种通用的,无状态的应用层协议,基于标准客户机/服务器模型。HTTP特点1.采用“请求/
Wesley13 Wesley13
3年前
HTTP报文
一、HTTP概述(一)什么是HTTP协议?  当在web页面输入url后,浏览器会向web服务器请求资源以显示web页面,而它们之间使用的就是HTTP协议(HyperTextTransferProtocol,超文本传输协议),浏览器就是基于HTTP协议进行文档传输的。(二)HTTP协议的特点1、
Stella981 Stella981
3年前
Http协议、Tomcat、servlet
HTTP协议Http,超文本传输协议是互联网上最广泛的一种网络协议,所有的www文件都必须遵守这个标准。Http协议由http请求和http响应组成http请求:1.请求行请求方式POST、GET、PUT、DELETE等请求的资源/DemoEE/form.html协议版本http/1.12.请求头cookie浏览器
Stella981 Stella981
3年前
Servlet主要相关类核心类 容器调用的过程浅析 servlet解读 怎么调用 Servlet是什么 工作机制
WEB简介Web项目是B/S结构浏览器/服务器模式的浏览器发起请求,服务器作出响应请求的发起和响应使用HTTP协议进行通讯所谓协议也就是一种固定格式而Socket是应用层与传输层的一层编程接口,屏蔽了传输层的细节所以Web项目也就是通过Socket发送HTTP请求和响应的过程只不过请求是浏览器发出来的响应是服务器发
Stella981 Stella981
3年前
Django_初识
HTTP协议超文本传输协议(应用层的,基于tcp\ip协议的)特点:无状态,无连接(短连接)请求消息格式:请求行\请求头部\空行\请求数据请求行:GET路径HTTP/1.1响应消息格式:响应行\响应头部\空行\响应数据响应行:HTTP/1.1状态码状态
Stella981 Stella981
3年前
Http基础解析
Http基础解析\\概念\\:HyperTextTransferProtocol超文本传输协议\传输协议:定义了,客户端和服务器端通信时,发送数据的格式\特点:1\.基于TCP/IP的高级协议2\.默认端口号:803\.基于请求/响应模型的:一次请求对应一次响应4\.
Wesley13 Wesley13
3年前
HTTP协议的头信息详解
HTTP协议的头信息详解HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。
Wesley13 Wesley13
3年前
HTTP协议简介
关于HTTP协议的基本介绍。<!moreHTTP协议是基于TCP/IP协议之上的应用层协议,主要用于规定互使用联网中客户端和服务器之间的通信格式,不关心具体传输细节,默认80端口。对于Web开发,不管是前端还是后端开发,了解HTTP协议是必备的一些基本知识。发展历程HTTP/0.9于