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.

Другие вопросы по тегам