我有一个Angular 1.5客户端,由Node 4,Express 4服务器发布。我在IE Edge中进行了99%的手动测试。 (剩下的就是Mocha,Karma,在交付之前,我点击了Firefox。)
我们最近使用helmet
将此行添加到我们的http服务器//Prevent Mime type sniffing/infering
app.use(helmet.noSniff());
问题:nosniff选项打破了我的所有缩略图。
在我的一个其他Angular模块中,它是一个控制器和视图组件,我有这一行:
...
<img ng-src="/api/thumbnail/{{title}}"/>
...
在我的Node / Express服务器上,我的/api/thumbnail/:title/
路由如下所示:
router.get('/api/thumbnail/:title/',function(req,res){
... get file to read from 'title'
fs.readFile(fileName,function(err,data){
if ( err ) { ... do error handling ... }
else { resp.send(data); }
});
})
答案 0 :(得分:0)
使用IE的网络调试器,我注意到发送到服务器的请求具有'application / octet stream'作为'Content-Type'。也许是因为我要寄回'image / jpeg',所以,我问自己这是不是导致nosniff杀死响应的原因?
在我的服务器代码中,我有一个“DEFAULT_THUMBNAIL”,如果'title'没有为我生成可行的缩略图,我会将其发回。所以,在我做resp.send(data)
之前,我做了这个:
const mime = require('mime');
...
resp.setHeader('Content-type',mime.lookup(DEFAULT_THUMBNAIL));
这似乎解决了 nosniff 问题。