我需要将CORS设置为在由express提供的脚本上启用。我如何设置这些公共/资产返回的响应头?


当前回答

简短的回答:

res.setHeaders——调用本地Node.js方法 Res.set -设置报头 Res.headers - res.set的别名

其他回答

简短的回答:

res.setHeaders——调用本地Node.js方法 Res.set -设置报头 Res.headers - res.set的别名

@klode的答案是正确的。

但是,您应该设置另一个响应标头以使其他人可以访问您的标头。


例子:

首先,在响应头中添加“page-size”

response.set('page-size', 20);

然后,你所需要做的就是暴露你的头文件

response.set('Access-Control-Expose-Headers', 'page-size')

您可以使用cors来做到这一点。cors将处理您的cors回复

var cors = require('cors')

app.use(cors());

你也可以添加一个中间件来添加CORS头,像这样就可以了:

/**
 * 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
 * <code>
 * const express = require('express');
 * const corsHeaders = require('./middleware/cors-headers');
 *
 * const app = express();
 * app.use(corsHeaders);
 * </code>
 */
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();
    }
};

首先在响应头中添加“field”

response.set('field', 'value');

然后你要做的就是暴露你的头文件

response.set('Access-Control-Expose-Headers', 'field')