Files
2026-07-13 12:32:21 +08:00

73 lines
1.6 KiB
Lua

local nkeys = require "table.nkeys"
local kong = kong
local ngx = ngx
local function get_response_headers(n)
local headers = {}
for i = 1, n - 2 do
headers["a" .. i] = "v" .. i
end
--headers["content-length"] = "0" (added by nginx/kong)
--headers["connection"] = "keep-alive" (added by nginx/kong)
return headers
end
local MaxArgsHandler = {
VERSION = "0.1-t",
PRIORITY = 1000,
}
function MaxArgsHandler:access(conf)
local client_args_count = nkeys(ngx.req.get_uri_args(0))
ngx.req.read_body()
kong.ctx.plugin.data = {
client_args_count = client_args_count,
kong = {
request_headers = kong.request.get_headers(),
uri_args = kong.request.get_query(),
post_args = kong.request.get_body() or {},
},
ngx = {
request_headers = ngx.req.get_headers(),
uri_args = ngx.req.get_uri_args(),
post_args = ngx.req.get_post_args(),
},
}
return kong.response.exit(200, "", get_response_headers(client_args_count))
end
function MaxArgsHandler:header_filter(conf)
local data = kong.ctx.plugin.data
return kong.response.exit(200, {
client_args_count = data.client_args_count,
kong = {
request_headers = data.kong.request_headers,
response_headers = kong.response.get_headers(),
uri_args = data.kong.uri_args,
post_args = data.kong.post_args,
},
ngx = {
request_headers = data.ngx.request_headers,
response_headers = ngx.resp.get_headers(),
uri_args = data.ngx.uri_args,
post_args = data.ngx.post_args,
}
})
end
return MaxArgsHandler