一句话概括RESTFUL
就是用 URL 定位资源,用 HTTP 描述操作。
小于 1 分钟
就是用 URL 定位资源,用 HTTP 描述操作。
XSS(跨站脚本攻击)是指攻击者在返回的 HTML 中嵌入 javascript 脚本,
为了减轻这些攻击,需要在 HTTP 头部配上,set-cookie: httponly-
这个属性可以防止 XSS,它会禁止 javascript 脚本来访问 cookie。 secure - 这个属性告诉浏览器仅在请求为 https 的时候发送 cookie。 结果应该是这样的:Set-Cookie=<cookie-value>....
都是保存在浏览器端,并且是同源的
fetch 发送 post 请求的时候,总是发送 2 次,第一次状态码是 204,第二次才成功?
原因很简单,因为你用 fetch 的 post 请求的时候,导致 fetch 第一次发送了一个 Options 请求,询问服务器是否支持修改的请求头,如果服务器支持,则在第二次中发送真正的请求。
缓存分为两种:强缓存和协商缓存(弱缓存),根据响应的 header 内容来决定
获取资源的形式 | 状态码 | 发送请求到服务器 | |
---|---|---|---|
强缓存 | 从缓存取 | 200(from cache) | 否,直接从缓存取 |
协商缓存 | 从缓存取 | 304(not modified) | 是通过服务器来告知缓存是否可用 |
协议头 | 说明 |
---|---|
Accept | 可接受的响应内容类型(Content-Types) |
Accept-Charset | 可接受的字符集 |
Accept-Encoding | 可接受的响应内容的编码方式 |
Accept-Language | 可接受的响应内容语言列表 |
Accept-Datetime | 可接受的按照时间来表示的响应内容版本 |
Authorization | 用于表示 HTTP 协议中需要认证资源的认证信息 |
Cache-Control | 用来指定当前的请求/回复中的,是否使用缓存机制。 |
Connection | 客户端(浏览器)想要优先使用的连接类型 |
Cookie | 由之前服务器通过Set-Cookie(见下文)设置的一个HTTP协议Cookie |
Content-Length | 以 8 进制表示的请求体的长度 |
Content-MD5 | 请求体的内容的二进制 MD5 散列值(数字签名),以 Base64 编码的结果 |
Content-Type | 请求体的 MIME 类型 (用于 POST 和 PUT 请求 |
Date | 发送该消息的日期和时间(以 RFC 7231 中定义的"HTTP 日期"格式 来发送) |
Expect | 表示客户端要求服务器做出特定的行为 |
Form | 发起此请求的用户的邮件地址 |
Host | 表示服务器的域名以及服务器所监听的端口号。如果所请求的端口 是对应的服务的标准端口(80),则端口号可以省略。 |
If-Match | 仅当客户端提供的实体与服务器上对应的实体相匹配时,才进行对 应的操作。主要用于像 PUT 这样的方法中,仅当从用户上次更新 某个资源后,该资源未被修改的情况下,才更新该资源。 |
If-Modified-Since | 允许在对应的资源未被修改的情况下返回 304 未修改 |
If-None-Match | 允许在对应的内容未被修改的情况下返回 304 未修改( 304 Not Modified ),参考 超文本传输协议 的实体标 |
If-Range | 如果该实体未被修改过,则向返回所缺少的那一个或多个部分。否 则,返回整个新的实体 |
If-Unmodified-Since | 仅当该实体自某个特定时间以来未被修改的情况下,才发送回应。 |
Max-Forwards | 限制该消息可被代理及网关转发的次数。 |
Origin | 发起一个针对跨域资源共享的请求(该请求要求服务器在响应中加 入一个 Access-Control-Allow-Origin 的消息头,表示访问控制所允许 的来源)。 |
Pragma | 与具体的实现相关,这些字段可能在请求/回应链中的任何时候产 生。 |
Proxy-Authorization | 用于向代理进行认证的认证信息。 |
Range | 表示请求某个实体的一部分,字节偏移以 0 开始。 |
Referer | 表示浏览器所访问的前一个页面,可以认为是之前访问页面的链接 将浏览器带到了当前页面。Referer 其实是 Referrer 这个单词,但 RFC 制作标准时给拼错了,后来也就将错就错使用 Referer 了。 |
TE | 浏览器预期接受的传输时的编码方式:可使用回应协议头 Transfer-Encoding 中的值(还可以使用"trailers"表示数据传输时的分 块方式)用来表示浏览器希望在最后一个大小为 0 的块之后还接收 到一些额外的字段。 |
User-Agent | 浏览器的身份标识字符串 |
Upgrade | 要求服务器升级到一个高版本协议。 |
Via | 告诉服务器,这个请求是由哪些代理发出的。 |
Warning | 一个一般性的警告,表示在实体内容体中可能存在错误。 |