请求配置
Keq 封装了 Fetch API 的配置选项,提供了更便捷的链式 API。本节介绍认证、请求模式等进阶配置。
HTTP Basic 认证
使用 .auth() 方法设置 HTTP Basic 认证,自动编码为 Base64 格式:
import { request } from "keq"
await request
.get("https://api.example.com/admin/users")
.auth("username", "password")
// 等价于 .set("Authorization", "Basic dXNlcm5hbWU6cGFzc3dvcmQ=")凭证模式(credentials)
控制浏览器是否在跨域请求中发送 Cookie:
import { request } from "keq"
// 跨域请求携带 Cookie
await request
.get("https://api.example.com/cats")
.credentials("include")
// 仅同源请求携带(默认)
await request
.get("https://api.example.com/cats")
.credentials("same-origin")
// 不发送 Cookie
await request
.get("https://api.example.com/cats")
.credentials("omit")请求模式(mode)
控制请求的跨域行为:
import { request } from "keq"
// CORS 模式(默认)
await request
.get("https://api.example.com/cats")
.mode("cors")
// 不允许跨域
await request
.get("/api/cats")
.mode("same-origin")
// 简单跨域(不触发预检,限制可用方法和头)
await request
.get("https://api.example.com/cats")
.mode("no-cors")重定向处理(redirect)
控制如何处理 HTTP 重定向响应:
import { request } from "keq"
// 自动跟随重定向(默认)
await request
.get("https://api.example.com/cats")
.redirect("follow")
// 手动处理重定向(返回重定向响应本身)
const response = await request
.get("https://api.example.com/cats")
.redirect("manual")
.resolveWith("response")
if (response.status === 302) {
console.log("重定向到:", response.headers.get("Location"))
}
// 遇到重定向时报错
await request
.get("https://api.example.com/cats")
.redirect("error")