秋招后的一些记录,看了很多东西想写下来,希望自己可以随时的查看,也希望有错误的地方大神可以指正。
1、HTTP有哪些方法及具体作用
HTTP1.0定义了三种请求方法
GET:通常用于请求服务器发送某些资源。
POST:发送数据给服务器。
HEAD:请求资源的头部信息, 并且这些头部与 HTTP GET 方法请求时返回的一致. 该请求方法的一个使用场景是在下载一个大文件前先获取其大小再决定是否要下载, 以此可以节约带宽资源。
HTTP1.1新增了五种请求方法
OPSTIONS:用于获取目的资源所支持的通信选项。
PUT:用于新增资源或者使用请求中的有效负载替换目标资源的表现形式。
DELETE:用于删除指定的资源。
TRACE:回显服务器收到的请求,主要用于测试或诊断。
CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
PATCH:用于对资源进行部分修改。
2、GET和POST有什么区别
1、数据传输方式不同:GET请求通过URL传输数据,而POST的数据通过请求体传输。
2、安全性不同:POST的数据因为在请求主体内,所以有一定的安全性保证,而GET的数据在URL中,通过历史记录,缓存很容易查到数据信息。
3、数据类型不同:GET只允许 ASCII 字符,而POST无限制。
4、get 请求会被浏览器主动 cache,而 post 不会,除非手动设置。
5、GET无害(重复提交的问题): 刷新、后退等浏览器操作GET请求是无害的,POST可能重复提交表单。
6、特性不同:
(1)安全:指只读特性,就是使用这个方法不会引起服务器状态变化。
(2)幂等:是指同一个请求方法执行多次和仅执行一次的效果完全相同。
(3)GET安全且幂等但是POST不是。
7、get 请求在发送过程中会产生一个 TCP 数据包;post 在发送过程中会产生两个 TCP 数据包
(1)对于 get 方式的请求,浏览器会把 http header 和 data 一并发送出去,服务器响应 200(返回数据)。
(2)而对于 post,浏览器先发送 header,服务器响应 100 continue,浏览器再发送 data,服务器响应 200 ok(返回数据)。post发两个tcp包也只是部分浏览器行为,与http协议无关。post先去检测一下服务器是否能正常应答,然后再把data携带过去,如果应答不了,就没有了第二步数据传输。
3、PUT和POST都是给服务器发送新增资源有何不同
幂等性:PUT幂等而POST不幂等。
PUT的URI指向是具体单一资源,而POST可以指向资源集合。
4、PUT和PATCH都是给服务器发送修改资源有何不同
PATCH用来对已知资源进行局部更新。
PUT是对资源直接进行覆盖式修改。
5、HTTP的请求报文是什么样的
**请求行:**请求方法、URL字段、HTTP协议版本字段
例如:GET /index.html HTTP/1.1
**请求头部:****关键字/值对组成
例如:
User-Agent:产生请求的浏览器类型。
Accept:客户端可识别的内容类型列表。
Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。
**空行:**很重要,用来区分开头部和实体。
**请求体:**post put等请求携带的数据。
问: 如果说在头部中间故意加一个空行会怎么样?
那么空行后的内容全部被视为实体。
6、HTTP的响应报文是什么样的
**响应行:**协议版本、状态码、状态码原因语句
例如:HTTP/1.1 200 OK
**响应头:**响应首部组成。
**空行:**很重要,用来区分开头部和实体。
**响应体:**服务器响应数据。
7、HTTP首部有哪些
通用首部字段(General Header Fields)
请求报文和响应报文两方都会使用的首部
Cache-Control : 控制缓存
Connection: 连接管理、逐条首部
Upgrade :升级为其他协议
via :代理服务器的相关信息
Wraning :错误和警告通知
Transfor-Encoding: 报文主体的传输编码格式
Trailer: 报文末端的首部一览
Pragma: 报文指令
Date: 创建报文的日期
请求首部字段(Reauest Header Fields)
客户端向服务器发送请求的报文时使用的首部
Accept:客户端或者代理能够处理的媒体类型
Accept-Encoding :优先可处理的编码格式
Accept-Language: 优先可处理的自然语言
Accept-Charset :优先可以处理的字符集
If-Match :比较实体标记(ETage)
If-None-Match : 比较实体标记(ETage)与 If-Match相反
If-Modified-Since :比较资源更新时间(Last-Modified)
If-Unmodified-Since:比较资源更新时间(Last-Modified),与 If-Modified-Since相反
If-Rnages : 资源未更新时发送实体byte的范围请求
Range :实体的字节范围请求
Authorization :web的认证信息
Proxy-Authorization: 代理服务器要求web认证信息
Host: 请求资源所在服务器
From: 用户的邮箱地址
User-Agent: 客户端程序信息
Max-Forwrads :最大的逐跳次数
TE: 传输编码的优先级
Referer :请求原始放的url
Expect :期待服务器的特定行为
响应首部字段(Response Header Fields)
从服务器向客户端响应时使用的字段
Accept-Ranges :能接受的字节范围
Age :推算资源创建经过时间
Location :令客户端重定向的URI
vary : 代理服务器的缓存信息
ETag: 能够表示资源唯一资源的字符串
WWW-Authenticate :服务器要求客户端的验证信息
Proxy-Authenticate :代理服务器要求客户端的验证信息
Server :服务器的信息
Retry-After: 和状态码503 一起使用的首部字段,表示下次请求服务器的时间
实体首部字段(Entiy Header Fields)
针对请求报文和响应报文的实体部分使用首部
Allow :资源可支持http请求的方法
Content-Language: 实体的资源语言
Content-Encoding: 实体的编码格式
Content-Length :实体的大小(字节)
Content-Type :实体媒体类型
Content-MD5 :实体报文的摘要
Content-Location: 代替资源的yri
Content-Rnages: 实体主体的位置返回
Last-Modified: 资源最后的修改资源
Expires :实体主体的过期资源
8、HTTP状态码有哪些
1xx(表示目前是协议处理的中间状态,还需要后续操作)
101 Switching Protocols:在HTTP升级为WebSocket的时候,如果服务器同