Http协议之Request和Response

协议版本:Http/1.0 Http/1.1

http1.0协议中,客户端与服务器建立连接后,只能获得一个web资源

http1.1协议中,客户端与服务器建立连接后,在一个连接上可以获取多个web资源

一个经典案例:

一个web页面,包含3img标签,当客户端访问这个页面时,客户端会访问几次服务器,发送几次http请求

1. html 第一次 获取服务器端的web资源1.html

2. <img src=”1.jpg”> 第二次获取服务器端的web资源1.jpg

3. <img src=”2.jpg”> 第三次...

4. <img src=”3.jpg”> 第四次...


http请求

客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个http请求,一个完整的http请求包括

请求行:GET /book/java.html HTTP/1.1

若干个请求头

一个空行(空行后面跟请求参数)

 

请求行详解:

请求行中的GET称之为请求方式,请求方式有:

POST/GET/HEAD/OPTIONS/DELETE/TRACE/PUT

常用的有:GET POST

用户如果没有设置,默认情况下浏览器向服务器发送的都是get请求,用户如果想把请求方式改为POST, 可以通过更改表单的提交方式实现

GETPOST的主要区别

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

例如:GET /book/java.html?name=kermit&password=123456 HTTP/1.1

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

POST则可以在请求的实体内容中向服务器发送数据,

POST方式的特点:请求的参数不会再URL中显示,请求的参数在请求头下面空一行的下一行显示,传动的数据量无限制

请求头详解:

Accept:用于告诉服务器,客户机支持的数据类型

Accept-Charset:告诉服务器。客户机采用的编码

Accept-Encoding:告诉服务器,客户机支持的数据压缩格式

Accept-language:告诉服务器,客户机的语言环境

host:告诉服务器,想访问的主机名

If-Modified-Since:告诉服务器,资源的缓存时间

Referer:告诉服务器,他是从哪个资源来访问服务器的(防盗链)

User-Agent:告诉服务器,客户机的软件环境

HTTP响应

一个http响应代表服务器向客户端回送的数据,它包括:

一个状态行、若干响应头,一个空行,以及实体内容

状态行:HTTP/1.1  200  OK

格式:HTTP版本号 状态码 原因叙述<CRLF>

状态码用于表示服务器对请求的处理结果,他是一个三位数的十进制数。响应状态码分为5类,如下所示:

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

200-299 表示成功接收请求并已完成整个处理过程,常用200

300-399 表示为完成请求,客户端进一步细化请求。例如:请求资源已经移动到一个新地址,常用302,307304302让去找一个指定的其他资源)(307304拿缓存)

400-499 表示客户的请求有错误,常用404 403没有权限,服务器拒绝访问)

500-599 表示服务器端出现错误,常用500

响应头:

Location:这个头配合302状态使用,用于告诉客户找谁

Server:服务器通过这个头,告诉浏览器服务器的类型

Content-Encoding:服务器通过这个头,告诉浏览器数据的压缩格式

Content-Length:服务器通过这个头,告诉浏览器回送数据的长度

Content-type:服务器通过这个头,告诉浏览器回送数据的类型

Last-Modified:服务器通过这个头,告诉浏览器当前资源缓存时间

Refresh:服务器通过这个头,告诉浏览器隔多长时间刷新一次

Content-Disposition:服务器通过这个头,告诉浏览器以下载方式打开数据

Transfer-Encoding:服务器通过这个头,告诉浏览器数据的传送格式

Etag:缓存项头的头

Expires:服务器通过这个头,告诉浏览器把回送的资源缓存多长时间,-10,则是不缓存

Cache-Controlno-cache

Pragmano-cache

服务器通过以上两个头,也是控制浏览器不要缓存数据

猜你喜欢

转载自blog.csdn.net/kermit_father/article/details/80299400
今日推荐