const response = fetch(url, {

method: "GET",//请求方式

headers: {//定制http请求的标头

"Content-Type": "text/plain;charset=UTF-8"

},

body: undefined,//post请求的数据体,因为此时为get请求,故为undefined

referrer: "about:client",

referrerPolicy: "no-referrer-when-downgrade",//用于设定fetch请求的referer标头

mode: "cors", //指定请求模式,此时为cors表示支持跨域请求

credentials: "same-origin",//发送cookie

cache: "default",//指定如何处理缓存

redirect: "follow",

integrity: "",

keepalive: false,

signal: undefined

});method:HTTP 请求的方法,POST、DELETE、PUT都在这个属性设置。
headers:一个对象,用来定制 HTTP 请求的标头。
body:POST 请求的数据体。
cache:指定如何处理缓存。可能的取值如下:

/*

default:默认值,先在缓存里面寻找匹配的请求。

no-store:直接请求远程服务器,并且不更新缓存。

reload:直接请求远程服务器,并且更新缓存。

no-cache:将服务器资源跟本地缓存进行比较,有新的版本才使用服务器资源,否则使用缓存。

force-cache:缓存优先,只有不存在缓存的情况下,才请求远程服务器。

only-if-cached:只检查缓存,如果缓存里面不存在,将返回504错误。
/

mode: 指定请求的模式。可能的取值如下:

/

cors:默认值,允许跨域请求。

same-origin:只允许同源请求。

no-cors:请求方法只限于 GET、POST 和 HEAD,并且只能使用有限的几个简单标头,不能添加跨域的复杂标头,相当于提交表单所能发出的请求。
/

credentials:指定是否发送 Cookie。可能的取值如下:

/

same-origin:默认值,同源请求时发送 Cookie,跨域请求时不发送。

include:不管同源请求,还是跨域请求,一律发送 Cookie。

omit:一律不发送。

*/

signal:指定一个 AbortSignal 实例,用于取消fetch()请求keepalive:用于页面卸载时,告诉浏览器在后台保持连接,继续发送数据。

/*

一个典型的场景就是,用户离开网页时,脚本向服务器提交一些用户行为的统计信息。

这时,如果不用keepalive属性,数据可能无法发送,因为浏览器已经把页面卸载了。
/

redirect: 指定 HTTP 跳转的处理方法。可能的取值如下:

/

follow:默认值,fetch()跟随 HTTP 跳转。

error:如果发生跳转,fetch()就报错。

manual:fetch()不跟随 HTTP 跳转,但是response.url属性会指向新的 URL,response.redirected属性会变为true,由开发者自己决定后续如何处理跳转。
/

integrity:指定一个哈希值,用于检查 HTTP 回应传回的数据是否等于这个预先设定的哈希值。

/

比如,下载文件时,检查文件的 SHA-256 哈希值是否相符,确保没有被篡改

fetch('http://site.com/file', {

integrity: 'sha256-abcdef'

});
/

referrer: 用于设定fetch请求的referer标头。

/

这个属性可以为任意字符串,也可以设为空字符串(即不发送referer标头)。
/

referrerPolicy: 用于设定Referer标头的规则。可能的取值如下:

/

no-referrer-when-downgrade:默认值,总是发送Referer标头,除非从 HTTPS 页面请求 HTTP 资源时不发送。

no-referrer:不发送Referer标头。

origin:Referer标头只包含域名,不包含完整的路径。

origin-when-cross-origin:同源请求Referer标头包含完整的路径,跨域请求只包含域名。

same-origin:跨域请求不发送Referer,同源请求发送。

strict-origin:Referer标头只包含域名,HTTPS 页面请求 HTTP 资源时不发送Referer标头。

strict-origin-when-cross-origin:同源请求时Referer标头包含完整路径,跨域请求时只包含域名,HTTPS 页面请求 HTTP 资源时不发送该标头。

unsafe-url:不管什么情况,总是发送Referer标头。

*/

取消fetch请求

fetch()请求发送后,如果中途想要取消,需要使用AbortController对象

//创建一个AbortController实例

let controller = new AbortController();fetch(url, {

signal: controller.signal

});
//给controller.signal绑定监听事件,controller.signal的值改变则会触发abort事件

controller.signal.addEventListener('abort',

() => console.log('abort!')

);

// controller.abort()方法用于发出取消信号。这时会触发abort事件,这个事件可以监听controller.abort(); // 取消
// 可以通过controller.signal.aborted属性判断取消信号是否已经发出

console.log(controller.signal.aborted); // true