fetch函数用于在边缘函数中发起一个HTTP/HTTPS请求。详细定义及用法参见MDN官方文档fetch()。
fetch("www.example.com")
会导致错误,您需要将其修改为fetch("https://www.example.com")
。fetch支持3xx跟随重定向,使用方法与MDN标准一致,您可以指定以下3xx跟随行为:
针对不同状态码有不同的跟随规则:
状态码 | 重定向规则 |
---|---|
301、302、303、308 | 重定向的请求方法被更改为 GET 方法,请求的body内容被忽略。 |
307 | 只跟随GET方法。如果使用其他HTTP方法发起请求,将会抛出错误,不会自动跟随重定向。 |
重定向地址是从Location
响应头中获取的。Location
头目前接受逗号 ,
分割的列表,但是只有第一个URL会被选择跟随,其他URL会被忽略。
为了方便您在运行时环境中操作响应的数据,fetch会默认自动解压缩被压缩过的数据。您也可以修改fetch的默认解压缩行为。
说明
当前的运行时环境中并未添加对请求数据进行压缩的功能,如果您希望fetch的数据保持压缩状态,并且不需要更改payload,您可以在fetch时关闭decompress功能。
{decompress: "manual"}
:表示不要解压缩,直接返回原数据。{decompress: "fallbackIdentity"}
:表示自动解压缩,如果遇到无法解压缩的算法,直接返回原来的数据。{decompress: "decompress"}
:表示自动解压缩,如果遇到无法解压缩的算法,将会报错。目前fetch只能解压缩gzip格式文件。fetch会通过回复的content-encoding
识别压缩格式。
content-encoding:gzip
数据会被识别为gzip压缩。content-encoding:gzip, identity
数据会被识别为gzip压缩。content-encoding:brotli,gzip
数据会被识别,但如果数据被压缩两次,只会解压gzip格式压缩的最外层数据。解压缩后,fetch会按照以下形式修改content-encoding
:
content-encoding:identity,gzip
会被改写为content-encoding:identity
。content-encoding:gzip
会被整个删除 。content-encoding:gzip,identity
会被整个删除。注意
解压缩后,content-length不再反映您的真实数据大小。为防止在透传请求的时候错误发送数据,content-length会被运行时删除,同时增加头:X-content-length-before-decompression 保留解压缩之前的数据大小。