feat: set content-type only when it doesn't exist on user custom headers #379
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi @guonaihong
When I use gout to send a JSON like the code below.
I found that the http headers gout sent likes this
Then I investigated the source code and found that on this line
gout/dataflow/req.go
Line 331 in 511f37c
gout adds
Content-Type
to headers whehter it exists or not. Which means if the user usesSetHeader('Content-Type', 'xxx')
andSetJSON()
in the same request. TheContent-Type
will have two values. Because theAdd
func called bySetJSON
andSetHeader
appends values to a key, not replace it. As the screenshot shows.To avoid this situation. I believe we should check existence of
Content-Type
before setting it. And if theContent-Type
exists, means users already set it by themeselves (for better visability or other purposes) or users want to use a different header value. gout shouldn't set it or replace it.