Nginx Lua扩展阅读带有保持其完整的多部分形式数据(代理)

我正在使用OpenResty。目标是使用Lua在Nginx中创建一些中间件,以便我可以检查某些字段的正文,但在阅读字段后保留正文。事实上,在某些情况下,我希望从正文中删除这些字段。

对于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的字段,在那里,将其记录下来并完全从请求中删除。

我还没有设法从正文中删除它,但步骤1是确保我至少可以阅读它而不篡改它。 非常感谢任何帮助。

点赞