IE8 - 内容不可接受的Symfony 2 App

时间:2016-04-25 16:07:41

标签: symfony nginx internet-explorer-8

我有一个网站启动并运行(我需要支持IE8)。

服务器:Nginx,框架Symfony2 / PHP / MySQL

问题很简单:IE8(8.0.6)在所有HTML页面上都显示 HTTP 406Content不可接受

标题(Nginx)

Cache-Control:no-cache
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html; charset=UTF-8
Date:Mon, 25 Apr 2016 15:23:46 GMT
Server:nginx/1.6.2
Transfer-Encoding:chunked
X-Debug-Token:d7e68f

HTML(2个版本,不工作)

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE" />
    <meta name="robots" content="noindex, nofollow">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Htm 2</title>
    <link rel="icon" type="image/x-icon" href="/favicon.ico" />
</head>
<body>
   ... hi
</body>
</html>


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta name="robots" content="noindex, nofollow">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Htm</title>
    <link rel="icon" type="image/x-icon" href="/favicon.ico" />
</head>
<body>
   ... hi
</body>
</html>

我已经阅读了很多关于此事的内容,但找不到任何线索。以前的网站版本适用于IE8并在Apache 2上运行。

1 个答案:

答案 0 :(得分:0)

此错误与Nginx无关,而是与Symfony 2FOSRESTBundle无关,后者依赖客户端标头通过格式侦听器来响应内容。

<强>解决方案:

我更改了配置以禁用FOSRest以禁用HTML页面的格式侦听器。

fos_rest:
    format_listener:
        rules:
            - { path: '^/rest', priorities: [ 'json' ], fallback_format: json, prefer_extension: false }
            #- { path: ^/, priorities: [ 'text/html', '*/*' ], fallback_format: html, prefer_extension: true }
            - { path: '^/', stop: true }