apache / apisix-go-plugin-runner

Go Plugin Runner for APISIX
https://apisix.apache.org/
Apache License 2.0
167 stars 69 forks source link

request help: Request header modification sometimes does not take effect in ext-plugin-pre-req #155

Open zxyao145 opened 6 months ago

zxyao145 commented 6 months ago

Issue description

The client uses Content-Type:application/x-www-form-urlencoded to access the HTTP API. After decrypting the body to json, I reset the request header by r.Header().Set("Content-Type", "application/json;charset=UTF-8"), but found that it sometimes does not work.

I have attempted to request 100 times, but there are 9 cases where it does not take effect

the code of plugin:

r.Header().Set("Content-Type", "application/json;charset=UTF-8")
r.SetBody(origBodyByte)

// pluginLogger is a wrapper for log that can output traceId
pluginLogger.Infof("request get Content-Type: %s", r.Header().Get("Content-Type"))

the log of the plugin:

2024/01/09 20:15:00 [warn] 302#302: *913 [lua] init.lua:961: 2024-01-09T20:15:00.941+0800       INFO    pluginlogger/logger.go:34       
 [00-3334f5bcb64c9c9cdf0da1997a9a81b6-5ff503ca821603ae-01] request get Content-Type: application/json;charset=UTF-8

the log of http api:

2024-01-09 20:15:00.946 [3334f5bcb64c9c9cdf0da1997a9a81b6]  [ http-nio-5001-exec-7:17758181 ] - [ DEBUG ]- [ org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor ]  Read "application/x-www-form-urlencoded;charset=UTF-8" to ["**********"]

2024-01-09 20:15:00.946 [3334f5bcb64c9c9cdf0da1997a9a81b6]  [ http-nio-5001-exec-7:17758181 ] - [ DEBUG ]- [ com.xxxx.controller.TestController ]  Content-Type:application/x-www-form-urlencoded

Is there anyone who can help explain the reason?

Environment