我在 AJAX 请求中发送 2 个大查询字符串,它们基本上是 jpeg 的 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
or max.
我也尝试将 AJAX 请求超时增加到一个非常大的时间跨度,但仍然失败。而且我现在不知道问题出在哪里。
我们如何接收长字符串Plug
?
StackOverflow 上关于这个问题的一些答案,人们使用 AJAX 和 PHP,建议进行更改post_max_size
,我们如何在 Elixir Plug 中做到这一点?
当您使用 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
.
如果您愿意处理更大的请求,请给出 :length
到 Plug.Parsers。
你应该改变代码query_string_length: 1_000_000
to length: 20_000_000
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)