🥤 JavaScript Fetch API
关于 Fetch
发送请求的一些选项 API。
一个包含完全可能个 fetch
选项及默认值的列表:
let promise = fetch(url, {
method: "GET", // POST,PUT,DELETE,等。
headers: {
// 内容类型 header 值通常是自动设置的
// 取决于 request body
"Content-Type": "text/plain;charset=UTF-8"
},
body: undefined // string,FormData,Blob,BufferSource,或 URLSearchParams
referrer: "about:client", // 或 "" 以不发送 Referer header,
// 或者是当前源的 url
referrerPolicy: "no-referrer-when-downgrade", // no-referrer,origin,same-origin...
mode: "cors", // same-origin,no-cors
credentials: "same-origin", // omit,include
cache: "default", // no-store,reload,no-cache,force-cache,或 only-if-cached
redirect: "follow", // manual,error
integrity: "", // 一个 hash,像 "sha256-abcdef1234567890"
keepalive: false, // true
signal: undefined, // AbortController 来中止请求
window: window // null
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# referrer
/ referrerPolocy
这些选项决定了 fetch
如何设置 HTTP 的 Referer
header。通常,这个 header 是被自动设置的,并包含了发出请求的页面的 url。在大多数情况下,它一点也不重要,但有时出于安全考虑,删除或缩短它是有意义的。
**
referer
选项允许设置任何Referer
(在当前域的),或者移除它。** 要不发送 referer,可以将referer
设置为空字符串:fetch('/page', { referrer: "" // 没有 Referer header });
1
2
3设置在当前域内的另一个 url:
fetch('/page', { // 假设目前在 https://now.info // 可以设置任何 Referer header,但必须是在当前域内的 referrer: "https://now.info/anotherpage" });
1
2
3
4
5referrerPolicy
选项为Referer
设置一般的规则。请求分为是那种类型:同源请求;跨源请求;从 HTTPS 到 HTTP 的请求 (从安全协议到不安全协议)。
与
referrer
选项允许设置确切的Referer
值不同,referrerPolicy
告诉浏览器针对各个请求类型的一般的规则。
# mode
mode
选项是一种安全措施,可以防止偶发的跨源请求。
# credentials
credentials
选项指定 fetch
是否应该随请求发送 cookie 和 HTTP-Authorization header。
# cache
默认情况下,
fetch
请求使用标准的 HTTP 缓存。就是说,它遵从Expires
,Cache-Control
header,发送If-Modified-Since
,等。就像常规的 HTTP 请求那样。
使用 cache
选项可以忽略 HTTP 缓存或者对其用法进行微调。
# redirect
通常来说, fetch
透明地遵循 HTTP 重定向,例如 301,302 等。
redirect
选项允许对此进行更改。
# integrity
integrity
选项允许检查响应是否与已知的预先校验和相匹配。
# keepalive
keepalive
选项表示该请求可能会在网页关闭后继续存在。