说明
边缘函数中,可通过两种方式获得
Request 对象:使用 Request 构造函数创建一个 Request 对象,用于 Fetch API 的操作。
使用 FetchEvent 对象 event.request,获得当前请求的 Request 对象。
构造函数
const request = new Request(input: string | Request, init?: RequestInit)
参数
参数名称 | 类型 | 必填 | 说明 |
input | 是 | URL 字符串或 Request 对象。 | |
options | 否 | Request 对象初始化配置项。 |
RequestInit
初始化 Request 对象的属性值选项。
属性名 | 类型 | 必填 | 默认值 | 说明 |
method | string | 否 | GET | 请求方法 ( GET、POST 等)。 |
headers | 否 | - | 请求头部信息。 | |
body | 否 | - | 请求体。 | |
redirect | string | 否 | follow | 重定向策略,支持 manual、error和 follow。 |
maxFollow | number | 否 | 12 | 最大可重定向次数。 |
version | string | 否 | HTTP/1.1 | HTTP 版本,支持 HTTP/1.0、HTTP/1.1 和 HTTP/2.0。 |
copyHeaders | boolean | 否 | - | 非 Web APIs 标准选项,表示是否拷贝传入的 Request 对象的 headers。 |
eo | 否 | - | 非 Web APIs 标准选项,用于控制边缘函数处理该请求的行为。 |
RequestInitEoProperties
非 Web APIs 标准选项,用于控制边缘函数处理该请求的行为。
参数名称 | 类型 | 必填 | 说明 |
resolveOverride | string | 否 | IP 不允许带 scheme 以及端口号。 IPv6 无需使用方括号包裹。 |
image | 否 | 图片处理参数配置项。 |
实例属性
body
// request.bodyreadonly body: ReadableStream;
bodyUsed
// request.bodyUsedreadonly bodyUsed: boolean;
标识请求体是否已读取。
headers
// request.headersreadonly headers: Headers;
method
// request.methodreadonly method: string;
请求方法,默认值为
GET。redirect
// request.redirectreadonly redirect: string;
请求重定向策略,可取值有:
follow、error、manual,默认为 follow。maxFollow
// request.maxFollowreadonly maxFollow: number;
请求最大重定向次数。
url
// request.urlreadonly url: string;
请求 url。
version
// request.versionreadonly version: string;
请求使用的 HTTP 协议版本。
eo
// request.eoreadonly eo: IncomingRequestEoProperties;
IncomingRequestEoProperties
属性名 | 类型 | 说明 | 示例值 |
geo | 描述客户请求的位置信息。 | - | |
tls | 描述客户请求的 TLS 相关信息。 该字段仅在客户端请求为 TLS 请求时有值。 | - | |
clientIp | string | 客户端请求 IP。 | 192.168.1.1 |
clientPort | number | 客户端请求端口。 | - |
httpProtocol | string | 客户端请求的 HTTP 协议版本。 | HTTP/1.1 |
uuid | string | 请求的唯一标识,作用同 EO-LOG-UUID。 | - |
GeoProperties
描述客户请求的位置信息。
属性名 | 类型 | 说明 | 示例值 |
asn | number | ASN。 | 132203 |
continent | string | 大洲名。 | Asia |
countryName | string | 国家名。 | Singapore |
countryCodeAlpha2 | string | SG | |
countryCodeAlpha3 | string | SGP | |
countryCodeNumeric | string | 702 | |
regionName | string | 区域名。 | - |
regionCode | string | 区域代码。 | AA-AA |
cityName | string | 城市名。 | Singapore |
latitude | number | 纬度。 | 1.29027 |
longitude | number | 经度。 | 103.851959 |
TlsProperties
描述客户请求的 TLS 相关信息。
属性名 | 类型 | 说明 | 示例值 |
version | string | 客户端请求的 TLS 版本。 | TLS1.3 |
cipher | string | 客户端请求的 TLS 加密套件。 | TLS_AES_256_GCM_SHA384 |
clientAuth | 描述客户端证书的相关信息。 该字段仅当客户端携带证书请求时有值。 | - | |
clientCiphersSha1 | string | 客户端在 TLS 握手期间 ClientHello 中发送的 cipher_suites 列表的 SHA-1 哈希值(Base64 编码),以大端格式编码。 | - |
clientExtensionsSha1 | string | 客户端在 TLS 握手期间 ClientHello 中发送的 extensions 列表的 SHA-1 哈希值(Base64 编码),以大端格式编码。 | - |
clientExtensionsSha1Le | string | 客户端在 TLS 握手期间 ClientHello 中发送的 extensions 列表的 SHA-1 哈希值(Base64 编码),以小端格式编码。 | - |
clientHelloLength | string | 客户端在 TLS 握手期间发送的 ClientHello 消息的字节长度。 | - |
clientRandom | string | 客户端在 TLS 握手期间 ClientHello 中发送的 32 字节 random 字段(Base64 编码)。 | - |
TlsClientAuthProperties
描述客户端证书的相关信息。
属性名 | 类型 | 说明 | 示例值 |
certPresented | string | 客户端是否实际发送了证书。 取值永远为 "1"。 | 1 |
certVerified | string | 客户端证书的校验结果。 仅有两个取值:"SUCCESS"(校验成功)和 "FAILED" (校验失败)。 | SUCCESS |
certIssuerDN | string | - | |
certSubjectDN | string | - | |
certIssuerDNRFC2253 | string | - | |
certSubjectDNRFC2253 | string | - | |
certIssuerDNLegacy | string | 客户端证书颁发者的唯一甄别名(Distinguished Name, DN),Open SSL 传统格式。 | - |
certSubjectDNLegacy | string | 客户端证书主体的唯一甄别名(Distinguished Name, DN),Open SSL 传统格式。 | - |
certSerial | string | 客户端证书序列号。 | - |
certIssuerSerial | string | 颁发此客户端证书的 CA 证书自身的序列号(即颁发者证书中的 serialNumber 字段)。 | - |
certSKI | string | 客户端证书的主体密钥标识符(Subject Key Identifier,SKI)。 | - |
certIssuerSKI | string | 客户端证书颁发者的主体密钥标识符(Subject Key Identifier,SKI)。 | - |
certFingerprintSHA1 | string | 客户端证书的 SHA-1 指纹。 | - |
certFingerprintSHA256 | string | 客户端证书的 SHA-256 指纹。 | - |
certNotBefore | string | Jan 01 00:00:00 2026 GMT | |
certNotAfter | string | Jan 01 00:00:00 2026 GMT | |
certPublicKeyAlgorithm | string | 客户端证书的公钥算法类型,取值为 "RSA"、"DSA"、"EC"、"ED25519"、"SM2" 及 "Other"。 | - |
certPublicKeyAlgorithmLongName | string | 客户端证书的公钥算法长名称,透传 OpenSSL 的算法长名称。 | - |
certPublicKeyAlgorithmShortName | string | 客户端证书的公钥算法短名称,透传 OpenSSL 的算法短名称。 | - |
实例方法
注意
获取请求体的方法,接收
HTTP body 最大字节数为 1MB,超出大小会抛出 OverSize 异常。超出大小时推荐使用 request.body 流式读取,详情参见 ReadableStream。arrayBuffer
request.arrayBuffer(): Promise<ArrayBuffer>;
blob
request.blob(): Promise<Blob>;
clone
request.clone(copyHeaders?: boolean): Request;
创建请求对象的副本。
参数
参数名称 | 类型 | 必填 | 说明 |
copyHeaders | boolean | 否 | 开启复制请求头,默认值为 false,取值说明如下。true 复制原对象的请求头。 false 引用原对象的请求头。 |
json
request.json(): Promise<object>;
获取请求体,解析结果为
JSON。text
request.text(): Promise<string>;
获取请求体,解析结果为文本字符串。
formData
request.formData(): Promise<FormData>;
参数
参数名称 | 类型 | 必填 | 说明 |
cookies | 否 | 新的 Cookies 对象。 |
示例代码
async function handleRequest() {const request = new Request('https://www.tencentcloud.com/');const response = await fetch(request);return response;}addEventListener('fetch', (event) => {event.respondWith(handleRequest());});
相关参考