NOSNIFF вызывает IMG SRC не работать
У меня есть клиент Angular 1.5, опубликованный на сервере Node 4,Express 4. Я делаю 99% ручного тестирования в IE Edge. (Остальное в Мокко, Карма, и перед доставкой я попал в 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); }
});
})
1 ответ
Используя сетевой отладчик 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.