Remove default charset from 'application/json' Content-Type header#2568
Remove default charset from 'application/json' Content-Type header#2568aldas merged 1 commit intolabstack:masterfrom doortts:default-json-encoding
Conversation
aldas
left a comment
There was a problem hiding this comment.
You can not just remove/replace echo.MIMEApplicationJSONCharsetUTF8 as it is part of Echos public API and we are quite strict on API changes.
- it would be nice if there would be link to JSON spec and remark about charset in doccomment
other than that I think this is probably ok
|
@aldas Thank you for the comment.
|
|
done, Thanks @doortts |
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [github.com/labstack/echo/v4](https://togithub.com/labstack/echo) | `v4.11.4` -> `v4.12.0` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>labstack/echo (github.com/labstack/echo/v4)</summary> ### [`v4.12.0`](https://togithub.com/labstack/echo/blob/HEAD/CHANGELOG.md#v4120---2024-04-15) [Compare Source](https://togithub.com/labstack/echo/compare/v4.11.4...v4.12.0) **Security** - Update golang.org/x/net dep because of [GO-2024-2687](https://pkg.go.dev/vuln/GO-2024-2687) by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2625](https://togithub.com/labstack/echo/pull/2625) **Enhancements** - binder: make binding to Map work better with string destinations by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2554](https://togithub.com/labstack/echo/pull/2554) - README.md: add Encore as sponsor by [@​marcuskohlberg](https://togithub.com/marcuskohlberg) in [https://github.com/labstack/echo/pull/2579](https://togithub.com/labstack/echo/pull/2579) - Reorder paragraphs in README.md by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2581](https://togithub.com/labstack/echo/pull/2581) - CI: upgrade actions/checkout to v4 by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2584](https://togithub.com/labstack/echo/pull/2584) - Remove default charset from 'application/json' Content-Type header by [@​doortts](https://togithub.com/doortts) in [https://github.com/labstack/echo/pull/2568](https://togithub.com/labstack/echo/pull/2568) - CI: Use Go 1.22 by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2588](https://togithub.com/labstack/echo/pull/2588) - binder: allow binding to a nil map by [@​georgmu](https://togithub.com/georgmu) in [https://github.com/labstack/echo/pull/2574](https://togithub.com/labstack/echo/pull/2574) - Add Skipper Unit Test In BasicBasicAuthConfig and Add More Detail Explanation regarding BasicAuthValidator by [@​RyoKusnadi](https://togithub.com/RyoKusnadi) in [https://github.com/labstack/echo/pull/2461](https://togithub.com/labstack/echo/pull/2461) - fix some typos by [@​teslaedison](https://togithub.com/teslaedison) in [https://github.com/labstack/echo/pull/2603](https://togithub.com/labstack/echo/pull/2603) - fix: some typos by [@​pomadev](https://togithub.com/pomadev) in [https://github.com/labstack/echo/pull/2596](https://togithub.com/labstack/echo/pull/2596) - Allow ResponseWriters to unwrap writers when flushing/hijacking by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2595](https://togithub.com/labstack/echo/pull/2595) - Add SPDX licence comments to files. by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2604](https://togithub.com/labstack/echo/pull/2604) - Upgrade deps by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2605](https://togithub.com/labstack/echo/pull/2605) - Change type definition blocks to single declarations. This helps copy… by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2606](https://togithub.com/labstack/echo/pull/2606) - Fix Real IP logic by [@​cl-bvl](https://togithub.com/cl-bvl) in [https://github.com/labstack/echo/pull/2550](https://togithub.com/labstack/echo/pull/2550) - Default binder can use `UnmarshalParams(params []string) error` inter… by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2607](https://togithub.com/labstack/echo/pull/2607) - Default binder can bind pointer to slice as struct field. For example `*[]string` by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2608](https://togithub.com/labstack/echo/pull/2608) - Remove maxparam dependence from Context by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2611](https://togithub.com/labstack/echo/pull/2611) - When route is registered with empty path it is normalized to `/`. by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2616](https://togithub.com/labstack/echo/pull/2616) - proxy middleware should use httputil.ReverseProxy for SSE requests by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2624](https://togithub.com/labstack/echo/pull/2624) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 6am on Monday" in timezone Europe/Paris, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/cozy/cozy-stack). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMTMuMSIsInVwZGF0ZWRJblZlciI6IjM3LjMxMy4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->
Try e.GET("/", func(c echo.Context) error {
c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8)
return c.JSON(http.StatusOK, "HI")
})This is how header is written for Lines 243 to 248 in 88c379f Example func main() {
e := echo.New()
e.GET("/", func(c echo.Context) error {
c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8)
return c.JSON(http.StatusOK, "HI")
})
if err := e.Start(":8080"); err != nil && !errors.Is(err, http.ErrServerClosed) {
log.Fatal(err)
}
}Output: x@x:~/$ curl -v http://localhost:8080
* processing: http://localhost:8080
* Trying [::1]:8080...
* Connected to localhost (::1) port 8080
> GET / HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/8.2.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: application/json; charset=UTF-8
< Date: Tue, 07 May 2024 18:44:09 GMT
< Content-Length: 5
<
"HI"
* Connection #0 to host localhost left intact
|
|
or you could create custom json serializer than sets that header before writing the json package main
import (
"encoding/json"
"errors"
"github.com/labstack/echo/v4"
"log"
"net/http"
)
type utf8JSONSerializer struct {
echo.DefaultJSONSerializer
}
func (d utf8JSONSerializer) Serialize(c echo.Context, i interface{}, indent string) error {
c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8)
return d.DefaultJSONSerializer.Serialize(c, i, indent)
}
func main() {
e := echo.New()
e.JSONSerializer = new(utf8JSONSerializer)
e.GET("/", func(c echo.Context) error {
return c.JSON(http.StatusOK, "HI")
})
if err := e.Start(":8080"); err != nil && !errors.Is(err, http.ErrServerClosed) {
log.Fatal(err)
}
} |
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [github.com/labstack/echo/v4](https://togithub.com/labstack/echo) | `v4.11.4` -> `v4.12.0` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>labstack/echo (github.com/labstack/echo/v4)</summary> ### [`v4.12.0`](https://togithub.com/labstack/echo/blob/HEAD/CHANGELOG.md#v4120---2024-04-15) [Compare Source](https://togithub.com/labstack/echo/compare/v4.11.4...v4.12.0) **Security** - Update golang.org/x/net dep because of [GO-2024-2687](https://pkg.go.dev/vuln/GO-2024-2687) by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2625](https://togithub.com/labstack/echo/pull/2625) **Enhancements** - binder: make binding to Map work better with string destinations by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2554](https://togithub.com/labstack/echo/pull/2554) - README.md: add Encore as sponsor by [@​marcuskohlberg](https://togithub.com/marcuskohlberg) in [https://github.com/labstack/echo/pull/2579](https://togithub.com/labstack/echo/pull/2579) - Reorder paragraphs in README.md by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2581](https://togithub.com/labstack/echo/pull/2581) - CI: upgrade actions/checkout to v4 by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2584](https://togithub.com/labstack/echo/pull/2584) - Remove default charset from 'application/json' Content-Type header by [@​doortts](https://togithub.com/doortts) in [https://github.com/labstack/echo/pull/2568](https://togithub.com/labstack/echo/pull/2568) - CI: Use Go 1.22 by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2588](https://togithub.com/labstack/echo/pull/2588) - binder: allow binding to a nil map by [@​georgmu](https://togithub.com/georgmu) in [https://github.com/labstack/echo/pull/2574](https://togithub.com/labstack/echo/pull/2574) - Add Skipper Unit Test In BasicBasicAuthConfig and Add More Detail Explanation regarding BasicAuthValidator by [@​RyoKusnadi](https://togithub.com/RyoKusnadi) in [https://github.com/labstack/echo/pull/2461](https://togithub.com/labstack/echo/pull/2461) - fix some typos by [@​teslaedison](https://togithub.com/teslaedison) in [https://github.com/labstack/echo/pull/2603](https://togithub.com/labstack/echo/pull/2603) - fix: some typos by [@​pomadev](https://togithub.com/pomadev) in [https://github.com/labstack/echo/pull/2596](https://togithub.com/labstack/echo/pull/2596) - Allow ResponseWriters to unwrap writers when flushing/hijacking by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2595](https://togithub.com/labstack/echo/pull/2595) - Add SPDX licence comments to files. by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2604](https://togithub.com/labstack/echo/pull/2604) - Upgrade deps by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2605](https://togithub.com/labstack/echo/pull/2605) - Change type definition blocks to single declarations. This helps copy… by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2606](https://togithub.com/labstack/echo/pull/2606) - Fix Real IP logic by [@​cl-bvl](https://togithub.com/cl-bvl) in [https://github.com/labstack/echo/pull/2550](https://togithub.com/labstack/echo/pull/2550) - Default binder can use `UnmarshalParams(params []string) error` inter… by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2607](https://togithub.com/labstack/echo/pull/2607) - Default binder can bind pointer to slice as struct field. For example `*[]string` by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2608](https://togithub.com/labstack/echo/pull/2608) - Remove maxparam dependence from Context by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2611](https://togithub.com/labstack/echo/pull/2611) - When route is registered with empty path it is normalized to `/`. by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2616](https://togithub.com/labstack/echo/pull/2616) - proxy middleware should use httputil.ReverseProxy for SSE requests by [@​aldas](https://togithub.com/aldas) in [https://github.com/labstack/echo/pull/2624](https://togithub.com/labstack/echo/pull/2624) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View the [repository job log](https://developer.mend.io/github/infratographer/x). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yOTMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjQzOC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> --------- Signed-off-by: Mike Mason <mimason@equinix.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Mike Mason <mimason@equinix.com>
The change caused the test to fail: labstack/echo#2568
Using application/json; charset=UTF-8 in response header is a common misuse. I think it is better to remove
; charset=UTF-8from default json response Content-Type header to prevent the misconception.See: #2567