当客户端未在标头中发送内容长度时,rails v6 如何填充 REQUEST 的内容长度?

Posted

技术标签:

【中文标题】当客户端未在标头中发送内容长度时,rails v6 如何填充 REQUEST 的内容长度?【英文标题】:How does rails v6 fills REQUEST's content-length when a client doesn't send content-length in the headers? 【发布时间】:2021-12-07 19:45:46 【问题描述】:

长话短说,我正在使用 node-fetch 将文件上传到 Rails 服务器。 该文件来自fs.createReadStream = ReadStream。

https://github.com/node-fetch/node-fetch

注意:当body为Stream时,Content-Length不会自动设置。

正如自述文件中所说,当它是一个流时,请求的内容长度不会由 node-fetch 设置。

当使用 Rails v6 接收数据时,它会以某种方式设置请求的内容长度,即使客户端没有发送长度。 使用 Rails v5 接收相同数据时,不会设置内容长度。

我正在尝试用他们在 v6 中所做的对 v5 进行猴子补丁。 有谁知道 v6 是怎么做到的?

【问题讨论】:

【参考方案1】:

其实是美洲狮..https://github.com/puma/puma/pull/2287

v4.3.7 及更高版本已修复。https://github.com/puma/puma/blob/master/History.md#437--2020-11-30

【讨论】:

以上是关于当客户端未在标头中发送内容长度时,rails v6 如何填充 REQUEST 的内容长度?的主要内容,如果未能解决你的问题,请参考以下文章

Spring 未在响应时发送 CSRF 令牌

.NET HttpClient - 当响应标头的内容长度不正确时接受部分响应

Apollo 客户端未在 Nextjs Lamda 中发送 JWT 不记名令牌

邮件未在 rails 上使用 devise、heroku 和邮戳发送

Axios 未在请求中发送自定义标头(可能是 CORS 问题)

发送标头后设置标头时出错 - Node.js