描述bug
当发送一个包含自定义头部的POST请求时,axios不会发送它们或者发送损坏的头部。
我正在使用Atlas DB API,它需要API密钥来访问集合。当我使用Axios ^1.4.0发送POST请求时,我会收到错误。
Logs:
[
"token contains an invalid number of segments"
]
Axios 1.3.6运行正常。
重现问题
我尝试用Atlas重现这个问题,可以通过以下简单的代码实现:
await axios.post(
"https://host.aws.data.mongodb-api.com/app/id/endpoint/data/v1)/action/insertOne",
{
"collection": "test-collection",
"database": "test-database",
"dataSource": "test-data-source",
"document": {"field": "value"}
},
{
headers: {
"Content-Type": "application/json",
"api-key": "top-secret-key",
},
}
);
代码片段
- 无响应*
预期行为
我期望结果是一个插入的记录,但我得到的是错误而不是预期的结果:
Logs:
[
"token contains an invalid number of segments"
]
axios版本
^1.4.0
适配器版本
- 无响应*
浏览器
- 无响应*
浏览器版本
- 无响应*
Node.js版本
v16.15.1
OS
Ubuntu 22.04和Windows 11
其他库版本
- 无响应*
其他上下文/截图
- 无响应*
2条答案
按热度按时间vcirk6k61#
尝试通过记录请求头并检查其格式是否正确来检查它们。例如:
这将帮助您验证请求头是否设置正确。
wfveoks02#
同样看到这个问题,它似乎与这个问题 #891 有关,因为在评论中描述的解决方法确实有效,但这肯定不理想,因为我们现在需要强制开发者在使用axios进行POST请求时仅使用“长格式”。
我已经添加了各种日志记录,甚至通过使用请求拦截器来记录并发现,当它在请求拦截器中记录时,头信息已经丢失了,但是使用一个
put
请求或一个get
请求时,这个问题并不存在。由于这个原始问题似乎可以追溯到2017年,很遗憾至今没有解决方案或者任何关于为什么这个问题存在的见解。