2017-11-29 1 views
0

아래 코드는 제가 전체 응용 프로그램에 대한 CORS에 회전을하지 않으Expressjs 한 경로에서 CORS를 사용하는 방법은 무엇입니까?

app.post('/blah', (req, res) => { 
    res.setHeader('Access-Control-Allow-Origin', '*'); 
    res.setHeader('Access-Control-Allow-Methods', 'GET, PUT, POST, DELETE, HEAD'); 
    res.status(204).send(); 
}); 

참고 작동하지 않습니다.

+1

클라이언트에서 보내는 정확한 CORS 요청은 무엇입니까? 고객이 프리 플라잉을 결정한 경우 OPTIONS 요청을 지원해야 할 수도 있습니다. – jfriend00

+0

@ jfriend00 네가 맞다. 이 url에 app.options를 추가했는데 이제 작동합니다. –

답변

1

를 참조하십시오. 제작중인 정확한 CORS 요청에 따라 브라우저는 요청 이전에 비행을해야한다고 결정할 수 있습니다. 그렇다면 일치하는 OPTIONS 요청에서 사용자 정의 헤더를 설정해야합니다.

같은 사용자 정의 헤더로 비행 전을 트리거 할 수있는 일의 숫자는 특정 동사는 특정 인증 메커니즘, 등 ...

여기에 비행 전 트리거 요청의 유형에 대한 설명이있다을 사용

이 기사에 : 기본적으로

Using CORS

Cross Origin Resource Sharing

, 그것은 간단한 요청은 GET 사용은 "간단한 요청"HEAD로 정의되지 않은 요청입니다 POST 및 사용자 정의 헤더 세트 만 포함됩니다. 브라우저가 OPTIONS 요청을 실제 URL을 보내기 전에 동일한 URL 요청 전에 비행 요청을 보내는 경우 특정 헤더에 대한 값이나 일부 값까지도 프리 플라이트 요청을 트리거합니다.

0

어떤 Express 버전을 사용하고 있습니까? API v4는 resset() 메서드를 표시하며 여기서 헤더를 정의 할 수 있습니다. 여러 헤더를 전달하면 객체를 전달합니다. 다음과 같이 시도하십시오.

res.set({ 
    'Access-Control-Allow-Origin': '*', 
    'Access-Control-Allow-Methods': 'GET, PUT, POST, DELETE, HEAD' 
}); 

Documentation

-2

https://github.com/expressjs/cors을 사용하지 않는 이유는 무엇입니까? 이런 식으로 사용할 수 있습니다. 이 (내 이전 코멘트 당) 문제 밝혀졌다 때문에

var express = require('express') 
var cors = require('cors') 
var app = express() 

app.use(cors()) 

app.get('/products/:id', function (req, res, next) { 
    res.json({msg: 'This is CORS-enabled for all origins!'}) 
}) 

app.listen(80, function() { 
    console.log('CORS-enabled web server listening on port 80') 
}) 

또는 답변 여기에이 게시 https://enable-cors.org/server_expressjs.html

app.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    next(); 
}); 

app.get('/', function(req, res, next) { 
    // Handle the get for this route 
}); 

app.post('/', function(req, res, next) { 
// Handle the post for this route 
}); 
+0

이것은 OP가 CORS를 모든 경로가 아닌 하나의 경로에서만 사용할 수 있도록하려는 핵심 질문에주의를 기울이지 않았습니다. 당신은 전혀 대답하지 않습니다. – jfriend00

+0

당신 말이 맞아요. 내 실수 –

관련 문제