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;
                }
Другие вопросы по тегам