fetch()
请求的底层用的是 的接口,参数完全一样,因此上面的 API 也是Request()
的 API。
这些属性里面,headers
、body
、method
前面已经给过示例了,下面是其他属性的介绍。
cache
cache
属性指定如何处理缓存。可能的取值如下:
default
:默认值,先在缓存里面寻找匹配的请求。no-store
:直接请求远程服务器,并且不更新缓存。reload
:直接请求远程服务器,并且更新缓存。no-cache
:将服务器资源跟本地缓存进行比较,有新的版本才使用服务器资源,否则使用缓存。force-cache
:缓存优先,只有不存在缓存的情况下,才请求远程服务器。only-if-cached
:只检查缓存,如果缓存里面不存在,将返回504错误。
mode
mode
属性指定请求的模式。可能的取值如下:
cors
:默认值,允许跨域请求。no-cors
:请求方法只限于 GET、POST 和 HEAD,并且只能使用有限的几个简单标头,不能添加跨域的复杂标头,相当于提交表单所能发出的请求。
credentials
跨域请求发送 Cookie,需要将credentials
属性设为include
。
signal
signal
属性指定一个 AbortSignal 实例,用于取消fetch()
请求,详见下一节。
keepalive
keepalive
属性用于页面卸载时,告诉浏览器在后台保持连接,继续发送数据。
一个典型的场景就是,用户离开网页时,脚本向服务器提交一些用户行为的统计信息。这时,如果不用keepalive
属性,数据可能无法发送,因为浏览器已经把页面卸载了。
redirect
integrity
integrity
属性指定一个哈希值,用于检查 HTTP 回应传回的数据是否等于这个预先设定的哈希值。
比如,下载文件时,检查文件的 SHA-256 哈希值是否相符,确保没有被篡改。
referrer
referrer
属性用于设定fetch()
请求的标头。
这个属性可以为任意字符串,也可以设为空字符串(即不发送referer
标头)。
referrerPolicy