Request

更新时间: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 (只读)

    一个字符串,表示请求的缓存模式,例如 defaultno-cachereloadforce-cacheonly-if-cached 等。

  • cf (只读)

    包含特定于 Cloudflare 的属性的对象。例如:

    • colo: 包含与请求所在的 Cloudflare 数据中心的colo代号相对应的字符串。
  • credentials (只读)

    一个字符串,表示请求的凭证模式,例如 includesame-originomit 等。

  • destination (只读)

    一个字符串,表示请求的目标,例如 documentstylescriptimagefont 等。

  • headers (只读)

    一个 Headers 对象,包含请求的头部信息。

  • integrity (只读)

    一个字符串,表示请求的完整性元数据,用于验证响应的完整性。

  • isHistoryNavigation (只读)

    一个布尔值,指示请求是否为 history navigation。

  • isReloadNavigation (只读)

    一个布尔值,指示请求是否为 reload navigation。

  • keepalive (只读)

    一个布尔值,指示是否保持连接。

  • method (只读)

    一个字符串,表示请求的方法,例如 GETPOSTPUTDELETE 等。

  • mode (只读)

    一个字符串,表示请求的模式,例如 corsno-corssame-origin 等。

  • redirect (只读)

    一个字符串,表示请求的重定向模式,例如 followerrormanual 等。

  • referrer (只读)

    一个字符串,表示请求的引用者。

  • referrerPolicy (只读)

    一个字符串,表示请求的引用者策略,例如 no-referrerno-referrer-when-downgradeoriginorigin-when-cross-originsame-originstrict-originstrict-origin-when-cross-originunsafe-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));
});

相关参考

本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!