[javascript] express.js 자산에 응답 헤더를 설정하는 방법

express가 제공하는 스크립트에서 CORS를 사용하도록 설정해야합니다. 공개 / 자산에 대한 이러한 반환 된 응답에서 헤더를 설정하려면 어떻게해야합니까?



답변

npm에는 Express에서 CORS를 처리하기위한 미들웨어가 하나 이상 있습니다 : 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])


답변

너무 짜증나.

여전히 문제가 있거나 다른 라이브러리를 추가하지 않으려는 경우 좋습니다. 이 미들웨어 코드를 경로 앞에두기 만하면됩니다.

코르 예

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)=> {...});


답변

cors를 사용하여이를 수행 할 수 있습니다. cors는 CORS 응답을 처리합니다.

var cors = require('cors')

app.use(cors());


답변

짧은 답변:

  • res.setHeaders -네이티브 Node.js 메소드를 호출

  • res.set -헤더를 설정

  • res.headers -res.set에 대한 별명


답변

npm에는 Express에서 CORS를 처리하기위한 미들웨어가 하나 이상 있습니다 : 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();
    }
};


답변

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