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 问题。
我有一个 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 问题。