目录
@
URL,全称是UniformResourceLocator, 中文叫统一资源定位符,是互联网上用来标识某一处资源的地址。
Header | 解释 | 示例 |
---|---|---|
Accept | 指定客户端能够接收的内容类型 | Accept: text/plain, text/html |
Accept-Charset | 浏览器可以接受的字符编码集 | Accept-Charset: iso-8859-5 |
Accept-Encoding | 指定浏览器可以支持的web服务器返回内容压缩编码类型。 | Accept-Encoding: compress, gzip |
Accept-Language | 浏览器可接受的语言 | Accept-Language: en,zh |
Accept-Ranges | 可以请求网页实体的一个或者多个子范围字段 | Accept-Ranges: bytes |
Authorization | HTTP授权的授权证书 | Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
Cache-Control | 指定请求和响应遵循的缓存机制 | Cache-Control: no-cache |
Connection | 表示是否需要持久连接。(HTTP 1.1默认进行持久连接) | Connection: close |
Cookie | HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。 | Cookie: $Version=1; Skin=new; |
Content-Length | 请求的内容长度 | Content-Length: 348 |
Content-Type | 请求的与实体对应的MIME信息 | Content-Type: application/x-www-form-urlencoded |
Date | 请求发送的日期和时间 | Date: Tue, 15 Nov 2010 08:12:31 GMT |
Expect | 请求的特定的服务器行为 | Expect: 100-continue |
From | 发出请求的用户的Email | From: user@email.com |
Host | 指定请求的服务器的域名和端口号 | Host: www.zcmhi.com |
If-Match | 只有请求内容与实体相匹配才有效 | If-Match: “737060cd8c284d8af7ad3082f209582d” |
If-Modified-Since | 如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码 | If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT |
If-None-Match | 如果内容未改变返回304代码,参数为服务器先前发送的Etag,与服务器回应的Etag比较判断是否改变 | If-None-Match: “737060cd8c284d8af7ad3082f209582d” |
If-Range | 如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。参数也为Etag | If-Range: “737060cd8c284d8af7ad3082f209582d” |
If-Unmodified-Since | 只在实体在指定时间之后未被修改才请求成功 | If-Unmodified-Since: Sat, 29 Oct 2010 19:43:31 GMT |
Max-Forwards | 限制信息通过代理和网关传送的时间 | Max-Forwards: 10 |
Pragma | 用来包含实现特定的指令 | Pragma: no-cache |
Proxy-Authorization | 连接到代理的授权证书 Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== | |
Range | 只请求实体的一部分,指定范围 | Range: bytes=500-999 |
Referer | 先前网页的地址,当前请求网页紧随其后,即来路 | Referer: http://www.zcmhi.com/archives/71.html |
TE | 客户端愿意接受的传输编码,并通知服务器接受接受尾加头信息 | TE: trailers,deflate;q=0.5 |
Upgrade | 向服务器指定某种传输协议以便服务器进行转换(如果支持) | Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 |
User-Agent | User-Agent的内容包含发出请求的用户信息 | User-Agent: Mozilla/5.0 (Linux; X11) |
Via | 通知中间网关或代理服务器地址,通信协议 | Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1) |
Warning | 关于消息实体的警告信息 | Warn: 199 Miscellaneous warning |
HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。
例如打开路径http://www.baidu.com/index.php,用火狐浏览器可以查看到请求报文为:
GET /index.php HTTP/1.1
因此用空格分隔之后得到的信息为
(1)请求方法: GET
(2)URL信息: /index.php
(3)HTTP协议版本: HTTP/1.1
//响应报文的结构
//响应首行
HTTP/1.1 200 OK
//协议名/协议版本 响应状态码 响应状态码的描述
//响应头
X-Powered-By: Express
//服务器提供者;
Accept-Ranges: bytes
//允许的单位;
Cache-Control: public, max-age=0
//缓存的控制;
Last-Modified: Fri, 21 Jul 2017 01:21:28 GMT
//最后的修改时间
ETag: W/"a6-15d62bc36d6"
//网页的标识
Content-Type: text/html; charset=UTF-8
//响应体的类型;
Content-Length: 166
//响应体的大小(字节);
Date: Fri, 21 Jul 2017 02:21:47 GMT
//响应时间;
Connection: keep-alive
//连接时间;
/* 空行: 空行用来分隔响应首部和响应体 */
//响应体:响应体就是服务器响应给客户端的主要内容
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>这是我的第一个网站</h1>
</body>
</html>
例如:Content-Type: text/html; charset='gb2312'
例如:Content-Encoding:gzip
第四部分:响应正文,服务器返回给客户端的文本信息。
HTTP响应行:主要是设置响应状态等信息。
//GET请求没有请求体,所以空行也没有意义
//get请求的结构:
GET /index.html?username=sunwukong&password=123123 HTTP/1.1
/* 请求首行
* GET /index.html?username=sunwukong&password=123123 HTTP/1.1
* 请求方式 资源路径?查询字符串 协议名/协议版本
* get请求通过查询字符串发送请求参数 */
//请求头:通过观察发现,请求头实际上就是一个一个的名值对结构,名字和值之间使用:连接,有的是一个名字对应多个值,有的是一个名字对应一个值
Accept: text/html, application/xhtml+xml, */*
//客户端可以接受的数据格式:后边跟的都是一个一个的MIME值(数据类型/具体的格式)
// */*:表示任意数据
X-HttpWatch-RID: 24713-10055
Referer: http://localhost:3000/form.html
//请求的来源:(广告、防盗链 。。。)
Accept-Language: zh-CN,en-US;q=0.5
//客户端允许的语言:zh-CN中文简体 zh-TW中文繁体
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
//用户代理(浏览器):用户系统的信息 可以通过User-Agent来识别用户的系统和浏览器信息
Accept-Encoding: gzip, deflate
//允许的压缩格式;
Host: localhost:3000
//主机地址;
DNT: 1
Connection: Keep-Alive
//连接时间:当前连接是一个长连接
//客户端要向服务器发送请求,必须先和服务器建立连接
Cookie: Webstorm-a34368aa=53546be1-ba52-410f-8e9f-3ed101260bbb
//post请求报文的结构
//请求首行
POST /index.html HTTP/1.1
//请求头
Accept: text/html, application/xhtml+xml, */*
Referer: http://localhost:3000/form.html
Accept-Language: zh-CN,en-US;q=0.5
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Content-Type: application/x-www-form-urlencoded
//请求体的数据类型:application/x-www-form-urlencoded 表示请求体会被url编码;
Accept-Encoding: gzip, deflate
Host: localhost:3000
Content-Length: 34
//请求体的长度(字节);
Connection: Keep-Alive
Cache-Control: no-cache
//缓存的设置:no-cache不使用缓存;
//请求体
username=sunwukong&password=123123
//请求参数,post请求是通过请求体发送请求参数的
GET 的本质是「得」,而 POST 的本质是「给」。GET 的内容可以被浏览器缓存,而 POST 的数据不可以。
2.在一次请求中,get一次性完成,post在部分浏览器(除了火狐)需要发送两次信息,所以get比post更快,更有效率。
原文:https://www.cnblogs.com/MTfangzi/p/10694102.html