是否可以覆盖客户端接受语言标头,以便子请求采用新语言



我们的业务需求规定,用户应该能够在不更改浏览器或系统设置的情况下更改其语言首选项。我们的实现是一个简单的界面,要求他们选择一种语言。最初,我打算将他们的选择存储在 cookie 值中并检查它并设置 UI 区域性,但我想知道是否有更简单的方法。

目前,我正在尝试查看是否可以接受他们的选择,然后在响应中设置接受语言,以便在后续请求中使用它。现在,我在响应中设置了接受语言标头,但下一个请求用浏览器值覆盖了它(例如 en-US,en;q=0.8") 这可能吗,我该怎么做?也欢迎任何其他实现此功能的想法。

是的,您可以覆盖Accept-Language HTTP 标头的效果。更确切地说,这样的标头本身没有效果。它的唯一作用是参与语言协商,如果服务器进行此类协商。您无需使用任何内容来覆盖它;只是不要使用它,或者以使其他设置覆盖它的方式使用它。

使用 Cookie 是常用方法。不理想,但通常是实践中的最佳方法。如果需要,您可以使用 Accept-Language 标头来确定语言选择菜单中的默认选项,但这比大多数人想象的要复杂得多。通常,标头指定具有"质量因素"的语言或区域设置列表,而不仅仅是语言。

在 HTTP 响应中设置Accept-Language是没有意义的,因为Accept-Language只是一个请求标头。

最新更新