grunt-contrib-connect middleware CORS solution with keepalive true

cors, grunt-contrib-connect

Solution

It's sad that nobody responded to that earlier.

Your code looks just like in the documentation, but you add the headers to `req` instead of `res`.

The second problem is that the docs mislead you into(fixed) adding your middleware with `.push`. Your code is not called at all, because something before it is doing a `res.end` and/or not calling `next()`.

Your fixed code would look like this:

    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;
                }

Problem

For my local development system I am trying to serve front-end assets using grunt-contrib-connect. I need a cross-domain solution for using fonts in Firefox. The server runs just fine, but I cannot seem to get the headers set. I am using version 0.7.1 of 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; } } } } ``` Is there a problem using keepalive with middleware?

Original source