CORS-решение для grunt-contrib-connect промежуточного программного обеспечения с keepalive true
В своей локальной системе разработки я пытаюсь обслуживать внешние ресурсы с помощью grunt-contrib-connect. Мне нужно междоменное решение для использования шрифтов в Firefox. Сервер работает нормально, но я не могу установить заголовки.
Я использую версию 0.7.1 grunt-contrib-connect.
connect: {
dev: {
options: {
port: '9001',
base: 'build',
hostname: 'localhost',
keepalive: true,
middleware: function(connect, options, middlewares) {
// inject a custom middleware into the array of default middlewares
// this is likely the easiest way for other grunt plugins to
// extend the behavior of grunt-contrib-connect
middlewares.push(function(req, res, next) {
req.setHeader('Access-Control-Allow-Origin', '*');
req.setHeader('Access-Control-Allow-Methods', '*');
return next();
});
return middlewares;
}
}
}
}
Есть ли проблема с использованием keepalive с промежуточным программным обеспечением?
1 ответ
Печально, что никто не ответил на это раньше.
Ваш код выглядит так же, как в документации, но вы добавляете заголовки к req
вместо res
,
Вторая проблема что документы вводят вас в заблуждение (исправлено) добавление промежуточного программного обеспечения с .push
, Ваш код не вызывается вообще, потому что что-то перед этим делает res.end
и / или не звонить next()
,
Ваш фиксированный код будет выглядеть так:
middleware: function (connect, options, middlewares) {
// inject a custom middleware
middlewares.unshift(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', '*');
//a console.log('foo') here is helpful to see if it runs
return next();
});
return middlewares;
}