javascript - axios 无法发送带有 cookie 的请求
问题描述
我正在尝试从我的 api 中获取数据,我需要在标头中传递一个 cookie。我在邮递员上进行了测试,它可以工作,但我的代码不能工作,返回错误是 403。有什么想法我错过了吗?
谢谢
这是我的代码:
function LoadStudies() {
const config = {
headers: {
Cookie: '_ga=GA1.2.2139220028.1611912340;csrftoken=ADJBapIX3oLu3j8QHdD05zsJnDhzx0jDYtAjKV2GY0FkBzVNfdLY8xVMV1YF4Ibd;djdt=show;sessionid=0x40wumk8ehcb4boh6610pqud5wtqsjl;session_state=4f7e11af-abd0-4f9f-8357-611100821df3'
},
withCredentials :true,
}
console.log(config)
axios
.get("https://Domain/api/study/", config)
.then((response) => {
console.log('working!')
}).catch((error) => {
console.log(error)
});
}
LoadStudies();
解决方案
(我假设你在浏览器中运行这个客户端,给定 tag:reactjs] 标签)。
Cookie
是一个禁止的标题名称。
您不能使用客户端 JavaScript 手动设置标头。您必须有一个现有的 cookie(如果您有,它将被发送withCredentials: true
)。
如果您正在发出同源请求,您可以通过 设置它document.cookie
,否则您将必须发出 HTTP 请求(使用withCredentials: true
)并让 API 设置 cookie(不过,浏览器对 3rd-party cookie 的限制可能会导致问题)。
请注意,API 通常是无状态的,因此您尝试发送带有 Google Analytics ID、会话 ID 和 csrftoken 的 cookie 是很奇怪的。通常,您只会发送一个授权令牌,现在通常是JWT,并且通常在Authorization
标头而不是 Cookie 中。
推荐阅读
- regex - 从正则表达式匹配中删除最后一个字符
- gradle - JAXBException: class ... 此上下文不知道它的任何超类
- python - 从字典列表中的字典中删除键
- jenkins - 使用 Kubernetes 和 Jenkins 在持续交付中实现手动审批
- python - 预期的
, 但发现 google-ads.yaml 文件错误 Python 3 - c - 无法解析标头中定义的 Eclipse C 常量
- jmeter - 我想知道我的服务器每秒可以处理多少个请求?
- hadoop - winutils和HBase是什么关系?
- angular - How to replace route parameters in active route
- javascript - 如何安全地从日期时间中提取时间 - 2019 年 8 月 5 日星期一 14:29:16 GMT+0530(印度标准时间)