javascript - Typescript 从 POST 和 PATCH 获取请求中删除授权标头
问题描述
我使用 C# 构建了一个 API,该 API 使用 JWT 令牌进行授权。在前端,我将这些令牌存储在本地存储中并在创建请求时获取它们。创建 GET 或 DELETE 请求时,一切正常,使用console.log()
我可以看到 fetch 选项添加了 Authorization 标头。但是,当使用 POST 或 PATCH 方法时,Authorization 标头在将其添加到对象后立即丢失。这是我的请求方法:
const send = async (apiOptions: ApiParams): Promise<FetchReturn> => {
const accessToken = GetAccessToken()
const options: ApiOptions = {
method: apiOptions.method,
headers: {
Authorization: `Bearer ${accessToken}`
}
}
console.log(options)
if (apiOptions.data) {
options.headers = {
'Content-Type': 'application/json'
}
options.body = JSON.stringify(apiOptions.data)
}
const result = await fetch(`${getUrl()}/${apiOptions.path}`, options).then(res => res).catch(err => err)
if (!result.ok) {
if (IsExpired()) {
const refreshResult = await fetch(`${getUrl()}/api/user/refresh`, {method: 'POST', headers:{
'Content-Type': 'application/json'
}, body: JSON.stringify(GetRefreshRequest())}).then(res => res).catch(err => err)
if (refreshResult.ok) {
Login(JSON.parse(await refreshResult.text()))
return await send(apiOptions)
} else if (refreshResult.status === 401) {
Logout()
window.location.reload()
return { code: 0, text: ""}
}
}
}
const text = await result.text()
return { code: result.status, text: text }
}
解决方案
我想在 POST 的 apiParams 中,您分配了属性“数据”,然后您有完全替换请求标头对象的 if 条件。将其更改为:
options.headers['Content-Type'] = 'application/json';
在标头中保留授权
推荐阅读
- javascript - 测试反应组件时酶 onClick 不起作用
- mysql - MySQL Query select concat on json field ids
- dagster - dagster 是否支持没有输出的实体之间的依赖关系?
- python - 在不调用图形的函数中返回颜色条
- c# - 向谷歌云函数 .net 核心库调用 POST 请求
- docker - 基于图像的 Lambda 不适用于 Selenium Webdriver
- reactjs - NextJs _app 中的持久导航
- python - .isalpha() 在特定示例上返回 false
- swift - 为什么对 URLSession 配置对象的引用会中断?
- reactjs - 如何将 Formik 与对象内的对象数组一起使用