express가 제공하는 스크립트에서 CORS를 사용하도록 설정해야합니다. 공개 / 자산에 대한 이러한 반환 된 응답에서 헤더를 설정하려면 어떻게해야합니까?
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])
res.write('content')
합니까?
res.set
나를 위해 작동하지 않았지만 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)=> {...});
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();
});
@klode의 대답이 옳습니다.
그러나 다른 사용자가 헤더에 액세스 할 수 있도록 다른 응답 헤더를 설정해야합니다.
예:
먼저 응답 헤더에 'page-size'를 추가하십시오.
response.set('page-size', 20);
그런 다음 헤더를 노출하기 만하면됩니다.
response.set('Access-Control-Expose-Headers', 'page-size')
javascript res.set("...","..."); res.set("...","....");
이제 두 헤더를 어떻게 노출합니까?
javascript Access-Control-Expose-Headers: * // or Access-Control-Expose-Headers: <header-name>, <header-name>, ...
res
객체에 설정했기 때문 입니다. 이 내용을 보려고 할 때res.headers
;