0

我有一个 Angular 1.5 客户端,从 Node 4、Express 4 服务器发布。我在 IE Edge 中进行了 99% 的手动测试。(其余的在 Mocha、Karma 中,在交付之前,我点击了 Firefox。)

我们最近将这一行添加到了我们的 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); }
    });
})
4

1 回答 1

0

使用 IE 的网络调试器,我注意到发送到服务器的请求具有“应用程序/八位字节流”作为“内容类型”。也许是因为我要发回一个“图像/JPEG”,所以,我问自己这是否是导致 nosniff 杀死响应的原因?

在我的服务器代码中,我有一个“DEFAULT_THUMBNAIL”,如果“标题”没有为我生成可行的缩略图图像,我会将其发回。所以,在我做之前resp.send(data),我做了这个:

const mime = require('mime');
...
resp.setHeader('Content-type',mime.lookup(DEFAULT_THUMBNAIL));

这似乎解决了nosniff问题。

于 2016-09-16T17:57:01.100 回答