This is an automated email from the ASF dual-hosted git repository.
baoyuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix.git
The following commit(s) were added to refs/heads/master by this push:
new 2a22fc803 fix(request-validation): support Content-Type header with
charset for urlencoded data (#12406)
2a22fc803 is described below
commit 2a22fc80375d176c2f9f96aab47ce223a43473f6
Author: Baoyuan <[email protected]>
AuthorDate: Fri Jul 11 15:24:07 2025 +0800
fix(request-validation): support Content-Type header with charset for
urlencoded data (#12406)
---
apisix/plugins/request-validation.lua | 7 ++++++-
t/plugin/request-validation.t | 11 +++++++++++
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/apisix/plugins/request-validation.lua
b/apisix/plugins/request-validation.lua
index 0e6d36d95..138032f42 100644
--- a/apisix/plugins/request-validation.lua
+++ b/apisix/plugins/request-validation.lua
@@ -88,7 +88,12 @@ function _M.rewrite(conf, ctx)
end
local body_is_json = true
- if headers["content-type"] == "application/x-www-form-urlencoded" then
+ if headers["content-type"]
+ and core.string.has_prefix(
+ headers["content-type"]:lower(),
+ "application/x-www-form-urlencoded"
+ )
+ then
-- use 0 to avoid truncated result and keep the behavior as the
-- same as other platforms
req_body, err = ngx.decode_args(body, 0)
diff --git a/t/plugin/request-validation.t b/t/plugin/request-validation.t
index f1272c69e..fcb440729 100644
--- a/t/plugin/request-validation.t
+++ b/t/plugin/request-validation.t
@@ -1783,3 +1783,14 @@ Content-Type: application/x-www-form-urlencoded
" . "a=b&" x 101 . "required_payload=101-hello"
--- response_body eval
qr/101-hello/
+
+
+
+=== TEST 53: test urlencoded post data with charset header
+--- more_headers
+Content-Type: application/x-www-form-urlencoded; charset=utf-8
+--- request eval
+"POST /echo
+" . "a=b&" x 101 . "required_payload=101-hello"
+--- response_body eval
+qr/101-hello/