2017-11-18 4 views
0

/api/v1/support/* 경로와 일치하는 POST 요청에 대해 모든 끝점에서 CORS를 활성화해야합니다."cors"라이브러리를 사용하여 Express Route에서 CORS를 구성하는 방법

자격 증명이 true 인 POST 요청을 /api/v1/support/graphql으로하고 있지만 프리 플라이트 요청 (옵션 1)은 401을 반환합니다. 내가 잘못하고있는 것이 확실하지 않습니다.

const corsOptions = { 
    origin: /mydomain\.com$/, 
    credentials: true, 
    maxAge: 3600 
}; 
app.options('/api/v1/support/*', cors(corsOptions)); 
app.post('/api/v1/support/*', cors(corsOptions)); 

// graphQLRouter is an instance of express.Router() 
app.use('/api/v1/support/graphql', [ fowardIP, validateTokenInCookie ], graphQLRouter); 
+0

도움이 될 수도

const app = express(); const corsOptions = { origin(origin, callback) { callback(null, true); }, credentials: true }; app.use(cors(corsOptions)); var allowCrossDomain = function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); res.header('Access-Control-Allow-Headers', 'Content-Type,token'); next(); } app.use(allowCrossDomain);

액세스 제어 설정 ','사양의 예 : 액세스 제어 - 허용-방법에 따라 법적 request.OPTIONS입니다 .... ', ALLOW_METHODS', 'ALLOW_HEADERS'(access_control 헤더 아래에 있음) –

+0

브라우저는 '프리 플라이트'요청을하는 브라우저 외에도 서버를 사양에 맞게 조정해야 할 수도 있습니다. CORS 프리 플라이트 OPTIONS 요청에 자격 증명을 보내지 않습니다. 그리고 분명히 어딘가에 응용 프로그램 코드에, 당신은'/ api/v1/support/graphql' 경로에 대한 인증이 필요합니다. POST 요청에 대해서는 괜찮습니다. 프론트 엔드 코드가 그 POST의 일부로 자격증 명을 보내는 경우, 예상대로 작동합니다. OPTIONS 요청에는 문제가 없습니다. 인증을 요구하는 서버 없이는 자격 증명없이 작동해야합니다. – sideshowbarker

답변

0

당신이 이것을 시도하십시오 수 :

이 내 구성 (I 아래에이 샘플에서 더미의 실제 도메인을 변경 한 점에 유의)입니다. 이 서버에 당신에게

+0

감사하지만 작동하지 않았습니다. 구성이 잘못된 이유는 무엇입니까? –