Method Not Allowed
方法实现了可是不充许用Not Implemented
请求的方法没有实现ETag: W/"2a3b-1602480f459"
If-None-Match: W/"2a3b-1602480f459"
Last-Modified
If-Modified-Since
复制代码
那么这样一来,基本能够将 no-cache 与 must-revalidate, max-age=0 划等了,但这二者也有些细节上的区别,即:vue
在执行must-revalidate时,若浏览器第二次去请求服务器来作新鲜度验证,结果服务器挂了,没法访问,那么缓存须要返回一个504 Gateway Timeout的错误(这里应该是像nginx这样的代理来返回,如果浏览器如chrome,将直接是ERR_CONNECTION_REFUSED,即没法访问,链接被拒绝)。ios
而若是是no-cache,当验证新鲜度时,服务器扑街,则会照样使用本地缓存显示给用户(有的总比没的好,固然有可能显示的就是旧的文档了)。nginx
因此must-revalidate用在对事务要求比较严苛的状况下使用(好比支付)web
6个控制位,用来讲明本报文段的性质。说明: 确认 ack、推送 psh、 复位 rst、同步 syn、 终止 fin、 窗口算法
1.1版本新增,对同一个域名同时开6个connection,我发了12个get请求,浏览器采用非流水线模式。见下图:chrome
观察connection列,第二组与第一组的id是相同的,说明是共用的第一组。express
不一样的域、协议或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。 浏览器限制从脚本内发起的跨源HTTP请求。 例如,XMLHttpRequest和Fetch API遵循同源策略。这意味着使用这些API的Web应用程序只能从加载应用程序的同一个域请求HTTP资源,除非响应报文包含了正确CORS响应头。json
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Content-Type,Access-Token,X-Requested-With");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By",' 3.2.1')
res.header("Content-Type", "application/json;charset=utf-8");
next();
})
复制代码
与前述简单请求不一样,“需预检的请求”要求必须首先使用 OPTIONS 方法发起一个预检请求到服务器,以获知服务器是否容许该实际请求。"预检请求“的使用,能够避免跨域请求对服务器的用户数据产生未预期的影响。axios
举例:OPTIONS /users/ 200 0.883 ms - 13
后端
发送post请求到users,S端只收到options请求,B收到响应后, 知道不许许跨域,不会再发送真正的post请求
# vue 中axios
this.$http.get('http://localhost:3000/users/', {
withCredentials: true
})
# 响应头设置
res.header("Access-Control-Allow-Origin", "http://localhost:8080");
res.header("Access-Control-Allow-Headers", "Content-Type,x-xsrf-token");
res.header("Access-Control-Allow-Credentials",true);
复制代码
对于附带身份凭证的请求,服务器不得设置 Access-Control-Allow-Origin 的值为“*”。
跨域资源共享标准新增了一组 HTTP 首部字段,容许服务器声明哪些源站经过浏览器有权限访问哪些资源。另外,规范要求,对那些可能对服务器数据产生反作用的 HTTP 请求方法(特别是 GET 之外的 HTTP 请求,或者搭配某些 MIME 类型的 POST 请求),浏览器必须首先使用 OPTIONS 方法发起一个预检请求(preflight request),从而获知服务端是否容许该跨域请求。服务器确认容许以后,才发起实际的 HTTP 请求。在预检请求的返回中,服务器端也能够通知客户端,是否须要携带身份凭证(包括 Cookies 和 HTTP 认证相关数据)。
之因此要递增一个大版本到 2.0,主要是由于它改变了客户端与服务器之间交换数据 的方式。为实现宏伟的性能改进目标,HTTP 2.0 增长了新的二进制分帧数据层,而 这一层并不兼容以前的 HTTP 1.x 服务器及客户端——是谓 2.0。
流是链接中的一个虚拟信道,能够承载双向的消息;每一个流都有一个惟一的整数 标识符(一、2…N)
消息是指逻辑上的 HTTP 消息,好比请求、响应等,由一或多个帧组成
帧是最小的通讯单位,承载着特定类型的数据,如 HTTP 首部、负荷,等等。
有了新的分帧机制后,HTTP 2.0 再也不依赖多个 TCP 链接去实现多流并行了。 如今, 每一个数据流都拆分红不少帧,而这些帧能够交错,还能够分别优先级。 因而,全部 HTTP 2.0 链接都是持久化的,并且客户端与服务器之间也只须要一个链接便可。
(一般简称为HSTS)是一个安全功能,它告诉浏览器只能经过HTTPS访问当前资源,而不是HTTP。
语法
设置在浏览器收到这个请求后的<expire-time>秒的时间内凡是访问这个域名下的请求都使用HTTPS请求。
Strict-Transport-Security: max-age=<expire-time>
若是这个可选的参数被指定,那么说明此规则也适用于该网站的全部子域名。
Strict-Transport-Security: max-age=<expire-time>; includeSubDomains
查看 预加载 HSTS 得到详情。不是标准的一部分。
Strict-Transport-Security: max-age=<expire-time>; preload
复制代码
Chrome、Firefox等浏览器里,当您尝试访问该域名下的内容时,会产生一个307 Internal Redirect(内部跳转),自动跳转到HTTPS请求。
Upgrade-Insecure-Requests: 1
是一个请求首部,用来向服务器端发送信号,表示客户端优先选择加密及带有身份验证的响应,
参考 :developer.mozilla.org/zh-CN/docs/…
密码编码学是密码体制的设计学,而密码分析学则是未知密钥的状况下从密文推演出明文或密钥的技术。密码编码学与密码分析学合起来即为密码学。
RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被普遍使用。当时他们三人都在麻省理工学院工做。RSA就是他们三人姓氏开头字母拼在一块儿组成的。
服务器端的公钥和私钥,用来进行非对称加密
客户端生成的随机密钥,用来进行对称加密
(1)协商加密算法。
(2) 服务器鉴别。
(3) 会话密钥计算。 由浏览器A随机产生一个秘密数。
(4)安全数据传输