[axios]修复 #184 如果数据为 false 则删除内容类型

2024-05-15 7 views
1

我应该运行 grunt build 来捆绑新的源吗?

回答

9

在新版本发布之前无需运行构建。感谢您的公关!

8

恭喜@vandosant 获得第一个 PR。棒极了!

问题:您真的要删除 Content-Type 标头 if 吗requestData === null?我问是因为null是一个有效的 JSON'able 值,就像false.

图像

看起来您可能希望这样:

if (requestData === undefined && key.toLowerCase() === 'content-type') {
6

我也有同样的疑问。这感觉是最向后兼容的,因为以前任何错误都会删除Content-Type标头。在目前的实施中,我们现在只是让其false通过,这是解决该问题的最小改变。

8

旧代码还会删除Content-Type带有空字符串或数字有效负载的标头0。既然您正在改变这些价值观的行为,为什么不继续改变它null呢?

5

哦,还有NaN。 ;-P

5

顺便说一句,我对此感觉并不强烈。你不应该仅仅因为我发表了这些评论就做出改变。无论你选择什么,我都不会让我的感情受到伤害。 :)

2

你说得对。也许我们应该删除对null.已经很晚了,我正试图同时做几件事。我会好好睡一觉,以便明天能更清楚地思考。

5

查看代码历史记录后,它if (!data && key.toLowerCase() === 'content-type') {从第一天起就一直在做。我曾希望找到一个问题或 PR 来帮助我理解为什么要引入这个。我不记得为什么,但评论明确指出“如果数据未定义,则删除内容类型

此时,代码中的请求数据已经被转换。因此数据是原语、 FormDataArrayBuffer或之一ArrayBufferView。这意味着我们不担心尝试,JSON.stringify因为它已经被处理了。

我怀疑这种情况是出于以下两个原因之一:

  1. Content-Type防止设置但请求正文为空时出现错误
  2. Content-Type为不发送内容的动词设置时防止出现错误(例如, GET

我认为我们可以删除空检查并处理undefined.

8

:+1:

2

不愿意用一个错误替换另一个错误!我认为空检查太过分了并且可能会产生副作用。谢谢你抓住它。