首页 > 解决方案 > Nginx Lua 扩展读取多部分形式的正文,使其保持完整(代理)

问题描述

我正在使用 OpenResty。目标是在 Nginx 上使用 Lua 创建一些中间件,以便我可以检查正文中的某些字段,但是在读取字段后保持正文完好无损。事实上,在某些情况下,我想从正文中删除字段。

application/x-www-form-urlencoded我能够使用的情况下

ngx.req.read_body()
local args = ngx.req.get_post_args()

并且身体确实可以通过我的后端而不会受到影响。

application/json我能够使用的情况下

ngx.req.read_body()
local args = json.decode(ngx.req.get_body_data())

但是,当内容类型为multipart/form-data并且我尝试使用resty.upload时,我无法弄清楚如何将正文附加到请求中,更不用说在我想这样做时对其进行编辑了。

在它的最基本形式中,使用 resty.upload 库需要阅读多部分表单

local form, err = upload:new(chunk_size)

然而,当我这样做时,后端服务器没有收到任何正文内容。

这段代码似乎有两个开放的拉取请求,即12 ,尽管我尝试使用这两个版本的 upload.lua 均无济于事。

我已经看到有些图书馆旨在处理这种情况,例如

然而,这两个都受到较大的上传文件的影响,我不能受此限制。在这两种情况下,他们都建议使用我正在使用的 resty.upload 库。

最终,无论是否调用字段的上述内容类型,我都会在正文中查找,X_CUSTOM_FIELD如果存在,请将其记录并完全从请求中删除。

我还没有弄清楚如何从身体上剥离它,但第一步是确保我至少可以在不篡改的情况下阅读它。非常感谢任何帮助

标签: nginxluaproxyrequestmultipartform-data

解决方案


推荐阅读