01: HTTP有哪些⽅法?
GET 请求书
POST 发送数据给服务器
HEAD 请求资源的头部信息,查看资源信息(大小)
OPTIONS 获取服务器支持请求方法,用来检查服务器的性能,在正式请求前,先进行一次预检请求。服务端返回一些信息,浏览器拿到之后,看后台是否允许进行访问
PUT 向指定资源位置上传其最新内容
DELETE 请求服务器删除Request-URI所标识的资源
TRACE 回显服务器收到的请求,主要用于测试或诊断
02: GET和POST有什么区别?
get: 数据传递通过url 历史记录可以查询 幂等 数据小 数据ASCII字符
post:请求体 数据相对安全 非幂等 数据大 无限制
put: 幂等
幂等: 多次执行所产生的影响均与一次执行的影响相同
03:http的报⽂?
请求报文:
请求⾏ get方法 url地址 http1.1协议版本
请求头部 key:value组成的键值对信息
空⾏
请求体
发送时:
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的范围请求
Authorization web的认证信息
响应报文:
响应⾏ http1.1协议版本 200状态码 状态原因语
响应头部
空⾏
响应求体
返回时:
Allow 资源可⽀持http请求的⽅法
Content-Language 实体的资源语⾔
Content-Encoding 实体的编码格式
Content-Length 实体的⼤⼩(字节)
Content-Type 实体媒体类型
状态码:
2xx: 成功
3xx 重定向
301 永久性重定向,表示资源已被分配了新的 URL
302 临时重定向
4xx 客户端错误
401 请求要求用户的身份认证
403 客户端无权限
404 资源不存在,服务器找不到该资源
5xx 服务器错误
keep-alive?
http时无状态的链接,使用完毕后就断开了,来回连接消耗资源和时间,
在请求头中加上Connection: keep-alive,表示暂时不要关闭链接,继续下个请求,如果一段时间内不在请求,该链接自动断开
http vs https?
http 超文本传输协议,位于tcp/ip模型中的应用层,数据都是明文传输,安全性低
采用对称加密,双方通过密钥进行加密解密,但是密钥有可能被拦截,造成数据不安全
https: 非对称加密,
06:HTTP的缓存的过程是怎样的
。 客户端到服务端索要资源,
。 服务端返回资源,并响应头中设置缓存资源策略
。 客户端根据响应头开始缓存数据和响应头信息
。 再次请求且命中资源的时,会根据缓存策略判断时获取本地数据还是服务端数据
07:强缓存或者协商缓存?
强缓存
。 Expires 服务端返回一个绝对时间,再次请求时和本机时间比较判断缓存是否过期
。 Cache-Control 服务端返回一个相对时间,再次请求会检查该资源是不是在有效时间内(和响应头中的Date对比计算)
Cache-Control > Expires
协商缓存
。 服务端返回 Last-Modified最新更时间
。 客户端请求头 If-Modified-Since带过去更新时间
。 服务端进行资源更新时间比对,判断是不是要返回新的数据
ETag/If-None-Match 精准新高于Last-Modified
服务端返回ETag(根据内容进行hash,生成一个信息摘要,只要资源发生变化就更改信息摘要)
客户端请求头If-None-Match带过去信息摘要,然后到服务端比对判断是不是更新
客户端请求资源
判断缓存
。 没过期使用本地缓存数据
。 过期 Etag判断信息摘要
前端安全
01:xss 原理: 页面渲染时,包含可执行的脚本
。反射型(url参数直接注入) fcookie中设置 httpOnly,禁止读取cookie
。存储型(存储到DB后读取时注入) 转码URLEncode操作
当用户打开页面,恶意代码执行
。DOM型XSS攻击 尽量使用.textContxent、.setAttribute(),不是innerHTML outHTML
HTML节点内容注入
<div><script>alert(1);<script></div>
DOM属性注入
<img src='/images/1.png' οnerrοr='alert(1);'>
javascript代码
<script>alert(1);<script>
02:csrf 原理:在第三方网站向本网站发起请求
。用户登录了网站a,发起了身份认证
。网站a确认了认证,返回了cookie(包含用户信息)
。b站给用户一个地址,用户访问了b站,并在背后偷偷访问了a站, 此时将会把用户的cookie带过去,伪造了用户登录
防御:
referer验证:禁止来自第三方的请求
token:认证
禁止第三方网站携带本网站的cookie信息,设置same-site属性Strict
验证码:用户体验不好,使用token用户无感知
03:iframe嵌套
if (top.location != window.location)禁止嵌套
http三次握手 (建立链接)
01: 客户端 => 服务端 发送一个syn码
02: 服务端 => 客户端 服务端接收到syn码,一并返回 syn码 + ACK码给浏览器
03: 浏览器接收ACK码,验证是否正确,发送数据,建立数据连接
功能:
防止和客户端连接失败,服务端占用连接资源(检测双方都有数据链接能力)
http四次挥手 (断开链接)
01: 客户端 => 服务端 发送一个FIN码,告诉服务器,我数据传输完成,可以断开链接吗 (服务可能接受中)
02: 服务端 => 客户端 服务端接收到FIN码,返回 FIN码 + ACK码给浏览器, 我可能数据没接受完毕,等一下
03: 服务端 => 客户端 服务继续发送FIN码 + ACK码给浏览器,告诉浏览器数据,我数据接受完毕,你可以断开了
04: 客户端 => 服务端 浏览器接收到FIN+ACK码,然后发送ACK码给服务器,告诉服务器你可也以断开了