Javascript HTTP_ACCEPT_语言与Linux下Firefox中的navigator.LANGUAGE不同

Javascript HTTP_ACCEPT_语言与Linux下Firefox中的navigator.LANGUAGE不同,javascript,php,linux,firefox,Javascript,Php,Linux,Firefox,我正在Linux中的本地Apache2Web服务器上编程一些网页,我想使用PHP自动识别浏览器语言 在该网页中,我尝试使用JavaScript来console.log()了解客户端首选的语言,我得到了两种不同的输出: JavaScript(console.log(navigator.language);)返回es PHP()返回en-US,en;q=0.5 在about:config中,变量intl.accept\u languages设置为es-es,es,en-US,en 注意:我想获得

我正在Linux中的本地Apache2Web服务器上编程一些网页,我想使用PHP自动识别浏览器语言

在该网页中,我尝试使用JavaScript来
console.log()
了解客户端首选的语言,我得到了两种不同的输出:

  • JavaScript(
    console.log(navigator.language);
    )返回
    es
  • PHP(
    )返回
    en-US,en;q=0.5
about:config
中,变量
intl.accept\u languages
设置为
es-es,es,en-US,en

注意:我想获得的本地语言是西班牙语(
es

由于任何原因,Firefox似乎没有在我的Linux发行版(LinuxMint18.1)中正确配置,而我已经安装了所有东西(
Firefox
Firefox区域设置es

如果我在同一台计算机上尝试Chromium,PHP输出是
es,es;q=0.8;q=0.6,这是正确的

如果我在其他有Windows的计算机上使用Firefox,甚至在Android上使用Firefox,PHP输出也是正确的:
es,es;q=0.8;嗯我们,嗯,;q=0.5

为什么Firefox for Linux中的PHP输出错误?如何解决?提前谢谢


编辑:这些是HTTP头(我划掉了认证头)

请求:

GET / HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://localhost/
Cookie: PHPSESSID=crucsit7is3r6hvnd88k6q2rn5
Authorization: ########
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Pragma: no-cache
Cache-Control: no-cache
答复:

HTTP/1.1 200 OK
Date: Tue, 25 Jul 2017 20:39:21 GMT
Server: Apache/2.4.18 (Ubuntu)
Authentication-Info: ########
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 1301
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8

事实上,我在睡觉的时候找到了一个解决办法,就因为Chrome做了几年前的事情

感谢@Pointy的帮助

因此,如果有人也有这个问题,以下是步骤:

  • 在Firefox的配置面板中输入(
    搜索栏中的about:config
  • 搜索
    intl.accept\u languages
    变量
  • 用以下格式的不同语言替换默认值:
    xx-xx,xx
    ,例如
    de-de,de
    。最重要的是,这个变量必须将其状态从“默认”更改为“用户修改”状态
  • 再次用正确的值替换其值:您自己的值+默认Firefox值,即
    es-es,es,en-US,en
    (用您的值替换
    es-es,es
    部分,例如,
    fr-fr,fr,en-US,en
  • 应使用此配置重置HTTP标头

  • 事实上,我在睡觉的时候找到了一个解决办法,就因为Chrome做了几年前的事情

    感谢@Pointy的帮助

    因此,如果有人也有这个问题,以下是步骤:

  • 在Firefox的配置面板中输入(
    搜索栏中的about:config
  • 搜索
    intl.accept\u languages
    变量
  • 用以下格式的不同语言替换默认值:
    xx-xx,xx
    ,例如
    de-de,de
    。最重要的是,这个变量必须将其状态从“默认”更改为“用户修改”状态
  • 再次用正确的值替换其值:您自己的值+默认Firefox值,即
    es-es,es,en-US,en
    (用您的值替换
    es-es,es
    部分,例如,
    fr-fr,fr,en-US,en
  • 应使用此配置重置HTTP标头

  • HTTP头中到底发布了什么?@Pointy抱歉,我不明白你的问题。您想让我检查什么?使用浏览器开发人员工具查看实际的HTTP请求(和响应)标题是什么。@好吧,我在设置Linux Firefox时已在问题中发布了标题,因此我最喜欢的语言是西班牙语/西班牙语,我肯定会收到一个包含西班牙语的
    Accept Languages
    标题。HTTP标题中实际上发布了什么内容?@Pointy抱歉,我不明白你的问题。您想让我检查什么?使用浏览器开发人员工具查看实际的HTTP请求(和响应)标题是什么。@好吧,我在设置Linux Firefox时已在问题中发布了标题,因此我最喜欢的语言是西班牙语/西班牙语,我肯定会得到一个包含西班牙语的
    Accept Languages
    标题。