Подтвердить что ты не робот

Как установить заголовок ответа на активы express.js

Мне нужно установить CORS для включения в скрипты, обслуживаемые Express. Как настроить заголовки в этих возвращенных ответах для public/assets?

4b9b3361

Ответ 1

Существует по крайней мере одно промежуточное программное обеспечение для npm для обработки CORS в Express: cors. [см. ответ @mscdex]

Вот как установить настраиваемые заголовки ответов, из ExpressJS DOC

res.set(field, [value])

Установить поле заголовка для значения

res.set('Content-Type', 'text/plain');

или передать объект для установки сразу нескольких полей.

res.set({
  'Content-Type': 'text/plain',
  'Content-Length': '123',
  'ETag': '12345'
})

Псевдоним как

res.header(field, [value])

Ответ 2

Это так раздражает.

Хорошо, если у кого-то все еще есть проблемы или он просто не хочет добавлять другую библиотеку. Все, что вам нужно сделать, это поместить эту промежуточную строку кода перед вашими маршрутами.

Пример Cors

app.use((req, res, next) => {
    res.append('Access-Control-Allow-Origin', ['*']);
    res.append('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
    res.append('Access-Control-Allow-Headers', 'Content-Type');
    next();
});

// Express routes
app.get('/api/examples', (req, res)=> {...});

Ответ 3

Существует по крайней мере одно промежуточное программное обеспечение для npm для обработки CORS в Express: cors.

Ответ 4

Вы можете сделать это с помощью Cors. Корс будет обрабатывать ваш ответ CORS

var cors = require('cors')

app.use(cors());

Ответ 5

@klode ответ правильный.

Однако вы должны установить другой заголовок ответа, чтобы сделать ваш заголовок доступным для других.


Пример:

Во-первых, вы добавляете "размер страницы" в заголовке ответа

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

Затем все, что вам нужно сделать, это открыть свой заголовок

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

Ответ 6

Вы также можете добавить промежуточное ПО для добавления заголовков 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();
    }
};

Ответ 7

Короткий ответ:

res.setHeaders - вызывает собственный метод Node

res.set - устанавливает заголовки

res.headers - псевдоним для res.set

Ответ 8

service.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
    next();
  });