更新时间:2024-08-14 19:50:32
Request
对象表示一个 HTTP 请求,它包含了请求的 URL、方法、头部、内容等信息。您可以在Edge Cloud Apps 函数中使用 Request
对象来访问和操作传入的 HTTP 请求。
new Request(input, init?);
参数:
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
input |
Request | string | URL |
是 | 要获取的资源,可以是 Request 对象、字符串或 URL 对象。如果传入的是 Request 对象,则会创建一个该对象的副本。 |
init |
object |
否 | 一个对象,用于定义请求的属性,例如方法、头部、内容等。 |
body
(只读)
一个 ReadableStream
对象,表示请求体数据流。
bodyUsed
(只读)
一个布尔值,指示请求体是否已被使用。
cache
(只读)
一个字符串,表示请求的缓存模式,例如 default
、no-cache
、reload
、force-cache
、only-if-cached
等。
cf
(只读)
包含特定于 Cloudflare 的属性的对象。例如:
colo
: 包含与请求所在的 Cloudflare 数据中心的colo代号相对应的字符串。credentials
(只读)
一个字符串,表示请求的凭证模式,例如 include
、same-origin
、omit
等。
destination
(只读)
一个字符串,表示请求的目标,例如 document
、style
、script
、image
、font
等。
headers
(只读)
一个 Headers
对象,包含请求的头部信息。
integrity
(只读)
一个字符串,表示请求的完整性元数据,用于验证响应的完整性。
isHistoryNavigation
(只读)
一个布尔值,指示请求是否为 history navigation。
isReloadNavigation
(只读)
一个布尔值,指示请求是否为 reload navigation。
keepalive
(只读)
一个布尔值,指示是否保持连接。
method
(只读)
一个字符串,表示请求的方法,例如 GET
、POST
、PUT
、DELETE
等。
mode
(只读)
一个字符串,表示请求的模式,例如 cors
、no-cors
、same-origin
等。
redirect
(只读)
一个字符串,表示请求的重定向模式,例如 follow
、error
、manual
等。
referrer
(只读)
一个字符串,表示请求的引用者。
referrerPolicy
(只读)
一个字符串,表示请求的引用者策略,例如 no-referrer
、no-referrer-when-downgrade
、origin
、origin-when-cross-origin
、same-origin
、strict-origin
、strict-origin-when-cross-origin
、unsafe-url
等。
signal
(只读)
一个 AbortSignal
对象,用于中止请求。
url
(只读)
一个字符串,表示请求的 URL。
clientIP
(只读)
一个字符串,表示客户端的 IP 地址。
clone()
: 创建一个 Request
对象的副本。
arrayBuffer()
: 返回一个 Promise
对象,该对象解析为包含请求体数据的 ArrayBuffer
。
blob()
: 返回一个 Promise
对象,该对象解析为包含请求体数据的 Blob
。
formData()
: 返回一个 Promise
对象,该对象解析为包含请求体数据的 FormData
对象。
json()
: 返回一个 Promise
对象,该对象解析为包含请求体数据的 JSON 对象。
text()
: 返回一个 Promise
对象,该对象解析为包含请求体数据的字符串。
async function handleRequest(event) {
// 获取请求对象
const request = event.request;
// 打印请求方法、URL 和客户端 IP 地址
console.log(`请求方法: ${request.method}`);
console.log(`请求 URL: ${request.url}`);
console.log(`客户端 IP: ${request.clientIP}`); // 使用新增的 clientIP 属性
// 创建请求副本
const newRequest = request.clone();
// 获取请求体数据
const requestBody = await request.text();
// 返回响应
return new Response('请求已处理', { status: 200 });
}
addEventListener('fetch', (event) => {
event.respondWith(handleRequest(event));
});