Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
zxyao145 opened this issue Jan 9, 2024 · 1 comment

Comments

@zxyao145
Copy link

zxyao145 commented Jan 9, 2024

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

  • APISIX Go Plugin Runner's version:
    github.com/apache/apisix-go-plugin-runner v0.5.1-0.20231128010119-a265bcd63ca1
  • APISIX version: 3.6.0
  • Go version: 1.19
  • OS (cmd: uname -a): debian:bullseye-slim
@zxyao145 zxyao145 changed the title request help: Request header modification sometimes does not take effect request help: Request header modification sometimes does not take effect in ext-plugin-pre-req Jan 9, 2024
@Eslam3bdel3al
Copy link

We had same issue with the 'content-length' ,but get fixed by deleting it so it can be calculated again to the new length.

r.SetBody(newbody)
r.Header().Del("content-length")

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants