nginx add_header 不起作用

nginx add_header 不起作用

我在 Windows 7 上使用 nginx-1.7.0。我尝试使用 add_header 获取位于 /data/TESTFOLDER 的 json 文件。

我的位置块如下所示:

    location /data/TESTFOLDER/ {
        add_header 'Content-Type' 'application/json';
        autoindex on;
    }

当我运行我的网站时,在我的 javascript 中我有一个 jquery ajax 请求来从该文件夹获取 json 文件,firebug 给了我以下信息:

ResponseHeaders
Connection  keep-alive
Content-Type    text/html
Date    Wed, 09 Jul 2014 14:01:29 GMT
Server  nginx/1.7.0
Transfer-Encoding   chunked

Request Headers
Accept  application/json
Accept-Encoding gzip, deflate
Accept-Language en-us,is;q=0.7,en;q=0.3
Content-Type    application/json
Host    localhost
Referer http:// local host/index.html
User-Agent  Mozilla/5.0 (Windows NT 6.1; rv:30.0) Gecko/20100101 Firefox/30.0
X-Requested-With    XMLHttpRequest

所以你会看到内容类型没有像我希望的那样改变。我的配置文件中的其他地方没有 add_header,默认值设置为 octet_stream,这是应该的。

需要注意以下几点:

  • 请求“有效”,也就是说,我可以从浏览器访问本地主机/数据/TESTFOLDER/
  • mime.types 包含在我的配置文件中
  • mime.types 包含 application/json json;
  • 我的错误日志没有关于此的错误

另外,我对 nginx 和 Web 服务器还很陌生,所以请使您的解释简单易懂。:)

答案1

add_header不会替换现有的标题,而是添加一个新的标题,可能会导致重复,当它应该是唯一的和/或只读取其类型的第一个标题时可能会被过滤。

另一种可能性是,由于您没有使用该参数,因此响应中的 HTTP 状态代码与此指令文档中定义的列表不匹配always。您看到的 text/html 可能是 nginx 的默认 404 页面。

无论如何,你想要使用的default_type指示:

location /data/TESTFOLDER/ {
    default_type application/json;
    autoindex on;
}

相关内容