Send additional http headers with Express.JS

前端 未结 2 1943
滥情空心
滥情空心 2020-12-13 01:50

I have a few static pages served with Express.JS. The setup is easy:

var app = express();

app.configure(function(){
  app.use(express.static(path.join(appli         


        
相关标签:
2条回答
  • 2020-12-13 02:48

    I tried the below sample, but of course the header appears only on the default page

    Yes, that is because you defined it just for the GET / route and not for the other paths. You should use a middleware instead.

    If you wish to set the header for all requests:

    app.configure(function(){
      app.use(function(req, res, next) {
        res.setHeader("Access-Control-Allow-Origin", "*");
        return next();
      });
      app.use(express.static(path.join(application_root, "StaticPages")));
      app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
    });
    

    If you just want to do it for the static folders, there is no general method. You can probably change the express.static(which comes from connect.static). Another way to do it is to match urls and set the header if the url is matched.

    app.configure(function(){
      app.use(function(req, res, next) {
        var matchUrl = '/StaticFolder';
        if(req.url.substring(0, matchUrl.length) === matchUrl) {
          res.setHeader("Access-Control-Allow-Origin", "*");
        }
        return next();
      });
      app.use(express.static(path.join(application_root, "StaticPages")));
      app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
    });
    

    NOTE: that the middleware need to be before the routes to make effect, in other words you can't put the middleware after the static middleware.

    0 讨论(0)
  • 2020-12-13 02:52

    Another way :

    app.use(express.static(
        path.join(application_root, "StaticPages"),
        {
            setHeaders: (res) => {
                res.setHeader('Access-Control-Allow-Origin', '*')
            }
        }
    ))
    
    0 讨论(0)
提交回复
热议问题