发送大型JSON正文

时间:2018-01-19 23:58:40

标签: json haskell browser yesod

我正在生产应用程序中发送一个大型JSON主体(~3MB)(它是一个base64编码文件)。当我发送JSON主体时,Yesod似乎认为这有效:

POST /send-json
  Accept: */*
  Status: 200 OK 0.000098s

但浏览器没有收到回复,而是获得net::ERR_CONNECTION_RESET。我已经在Chrome,Safari和Firefox中重现了这一点。

这可能是某个地方的错误,可能是经线或wai?我的期望是,如果Yesod配置为:

maximumContentLength _ _ = Just (10 * 1024 * 1024) -- 10 megabytes

接收大型请求正文应该不是问题。

版本信息:https://gist.github.com/MaxGabriel/10e8a999eabcc9cb566c087978f5c3ac

LTS:LTS-Haskell 9.14

我在这里回复了这个问题:https://github.com/MaxGabriel/large-files。它只是一个简单的模板,只有一个额外的提交:https://github.com/MaxGabriel/large-files/commit/38addf762feaa5cbff19b84821c7980eec10b160。我只是复制一个字符串而不是发送文件,而是创建一个巨大的JSON主体(几兆字节)。

我无法重现在表单中发送二进制文件的问题。

我无法从curl重现此问题。

编辑:如果我实际使用requireCheckJsonBody消耗身体,那么问题就会消失。如果我忽略了身体而只是return (),那么我就会得到错误。因此,我认为这很可能是Yesod或堆栈中其他地方的错误

0 个答案:

没有答案