nosniff 导致 img src 无法工作

nosniff causing img src not to work

我有一个 Angular 1.5 客户端,从 Node 4、Express 4 服务器发布。我在 IE Edge 中进行了 99% 的手动测试。 (剩下的在摩卡,业力,交付前,我打了火狐。)

我们最近将此行添加到我们的 http 服务器,使用 helmet:

//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); }
    });
})

使用 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 问题。