node,express app尽管设置了application / javascript,但仍返回text / javascript响应头(Content-Type)

时间:2016-05-12 05:41:53

标签: javascript node.js express nginx content-type

我试图从我的express,nodejs应用程序返回jsonp,并且我一直在获取text / javascript而不是application / javascript(我认为应该是正确的Content-Type)。我并不担心IE< 8.我在返回结果时尝试设置内容类型的各种方法如下所示:

// Method 1
res.setHeader('Content-Type', 'application/javascript');
res.status(200).jsonp(result);

// Method 2
res.format({
    'application/javascript': function() {
        res.status(200).jsonp(result);
    }
});

// Method 3
res.set('Content-Type', 'application/javascript');
res.status(200).jsonp(result);

但无论如何,我得到的Content-Type始终是text / javascript,如下所示。我还在响应标题中两次得到'nosniff'标题: - /我在我的nginx.conf文件中只有一次,我已经彻底检查过了。甚至做了一个nginx -t,它说配置很好。

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 12 May 2016 05:06:28 GMT
Content-Type: text/javascript; charset=utf-8
Content-Length: 433
Connection: keep-alive
Keep-Alive: timeout=5
X-Powered-By: Express
Vary: Accept
X-Content-Type-Options: nosniff
ETag: W/"1b1-1ZnUnapTaayP/+6QW4iqXQ"
Expires: Thu, 31 Dec 2037 23:55:55 GMT
Cache-Control: max-age=315360000
Strict-Transport-Security: max-age=315360000; includeSubdomains
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Robots-Tag: none

我使用nginx作为使用'upstream thingy'的反向代理。我也在我的应用程序中使用bodyParser。如果需要任何进一步的信息,请告诉我,因为我对node / express完全不熟悉。感谢

1 个答案:

答案 0 :(得分:0)

我担心Express中的内容类型是硬编码的。请参阅here

从它的外观来看,唯一的方法就是自己重新实现.jsonp()(或者在GitHub上创建一个问题,让Express开发人员修复它)。