我在AJAX请求中发送2个大型查询字符串,基本上是jpeg(s)的Base64编码。当相机不是高分辨率时,AJAX请求不会中止。
起初,我认为它是一个Nginx问题,因为我收到错误request entity too large
我解决了它,然后我更改了我的插件
plug Plug.Parsers,
parsers: [
:urlencoded,
{:multipart, length: 20_000_000},
:json
],
pass: ["*/*"],
query_string_length: 1_000_000,
json_decoder: Poison
定义query_string_length
后,现在我没有收到上述任何错误,但ajax请求仍然中止。
Base64编码字符串大小为546,591 bytes
或最大
我已经尝试将AJAX请求超时增加到非常大的时间跨度,但它仍然失败。我现在还没有任何线索可以解决问题。
我们如何在Plug
中收到长字符串?
关于StackOverflow关于此问题的一些答案,其中人们使用AJAX和PHP,建议更改post_max_size
,我们如何在Elixir Plug中做到这一点?
答案 0 :(得分:2)
当你发送带有JSON数据的AJAX请求时,你应该将json的长度配置放在插件中。
plug Plug.Parsers,
parsers: [
:urlencoded,
{:multipart, length: 20_000_000},
{:json, length: 80_000_000},
],
pass: ["*/*"],
json_decoder: Poison
我想您不会将数据放在帖子的查询字符串中,因此query_string_length
- 不需要查询字符串的最大允许大小。
---原始答案---
对于1.4.3
周围的插件版本,并且没有query_string_length
选项。
当您将数据发布为字符串时,您使用的是Plug.Parsers
。
如果您愿意处理更大的请求,请提供:长度 到Plug.Parsers。
您应该将代码query_string_length: 1_000_000
更改为length: 20_000_000
。