Axios没有正确发送自定义标头,

kq0g1dla  于 9个月前  发布在  iOS
关注(0)|答案(2)|浏览(193)

描述bug

当发送一个包含自定义头部的POST请求时,axios不会发送它们或者发送损坏的头部。
我正在使用Atlas DB API,它需要API密钥来访问集合。当我使用Axios ^1.4.0发送POST请求时,我会收到错误。

  1. Logs:
  2. [
  3. "token contains an invalid number of segments"
  4. ]

Axios 1.3.6运行正常。

重现问题

我尝试用Atlas重现这个问题,可以通过以下简单的代码实现:

  1. await axios.post(
  2. "https://host.aws.data.mongodb-api.com/app/id/endpoint/data/v1)/action/insertOne",
  3. {
  4. "collection": "test-collection",
  5. "database": "test-database",
  6. "dataSource": "test-data-source",
  7. "document": {"field": "value"}
  8. },
  9. {
  10. headers: {
  11. "Content-Type": "application/json",
  12. "api-key": "top-secret-key",
  13. },
  14. }
  15. );

代码片段

  • 无响应*

预期行为

我期望结果是一个插入的记录,但我得到的是错误而不是预期的结果:

  1. Logs:
  2. [
  3. "token contains an invalid number of segments"
  4. ]

axios版本

^1.4.0

适配器版本

  • 无响应*

浏览器

  • 无响应*

浏览器版本

  • 无响应*

Node.js版本

v16.15.1

OS

Ubuntu 22.04和Windows 11

其他库版本

  • 无响应*

其他上下文/截图

  • 无响应*
vcirk6k6

vcirk6k61#

  1. 您的代码中包含一个占位符,用于存储您的特定信息,但似乎多了一个 ")" 字符。请确保 URL 正确拼写。
    尝试通过记录请求头并检查其格式是否正确来检查它们。例如:
  1. const headers = {
  2. "Content-Type": "application/json",
  3. "api-key": "top-secret-key",
  4. };
  5. console.log('Request Headers:', headers);
  6. axios.post(
  7. " [https://host.aws.data.mongodb-api.com/app/id/endpoint/data/v1/action/insertOne](https://host.aws.data.mongodb-api.com/app/id/endpoint/data/v1/action/insertOne) ",
  8. {
  9. "collection": "test-collection",
  10. "database": "test-database",
  11. "dataSource": "test-data-source",
  12. "document": {"field": "value"}
  13. },
  14. { headers }
  15. ).then(response => {
  16. console.log('Response:', response.data);
  17. })
  18. .catch(error => {
  19. console.error('Error:', error);
  20. });

这将帮助您验证请求头是否设置正确。

展开查看全部
wfveoks0

wfveoks02#

同样看到这个问题,它似乎与这个问题 #891 有关,因为在评论中描述的解决方法确实有效,但这肯定不理想,因为我们现在需要强制开发者在使用axios进行POST请求时仅使用“长格式”。
我已经添加了各种日志记录,甚至通过使用请求拦截器来记录并发现,当它在请求拦截器中记录时,头信息已经丢失了,但是使用一个 put 请求或一个 get 请求时,这个问题并不存在。
由于这个原始问题似乎可以追溯到2017年,很遗憾至今没有解决方案或者任何关于为什么这个问题存在的见解。

相关问题