How can I set response header on express.js assets

前端 未结 8 1947
孤独总比滥情好
孤独总比滥情好 2020-11-28 04:26

I need to set CORS to be enabled on scripts served by express. How can I set the headers in these returned responses for public/assets?

8条回答
  •  無奈伤痛
    2020-11-28 05:21

    You can also add a middleware to add CORS headers, something like this would work:

    /**
     * Adds CORS headers to the response
     *
     * {@link https://en.wikipedia.org/wiki/Cross-origin_resource_sharing}
     * {@link http://expressjs.com/en/4x/api.html#res.set}
     * @param {object} request the Request object
     * @param {object} response the Response object
     * @param {function} next function to continue execution
     * @returns {void}
     * @example
     * 
     * const express = require('express');
     * const corsHeaders = require('./middleware/cors-headers');
     *
     * const app = express();
     * app.use(corsHeaders);
     * 
     */
    module.exports = (request, response, next) => {
        // http://expressjs.com/en/4x/api.html#res.set
        response.set({
            'Access-Control-Allow-Origin': '*',
            'Access-Control-Allow-Methods': 'DELETE,GET,PATCH,POST,PUT',
            'Access-Control-Allow-Headers': 'Content-Type,Authorization'
        });
    
        // intercept OPTIONS method
        if(request.method === 'OPTIONS') {
            response.send(200);
        } else {
            next();
        }
    };
    

提交回复
热议问题