2017-03-03 2 views
2

cors npm 패키지를 미들웨어로 사용하는 앱이 있습니다. 나는 다음과 같은 설정이 있습니다 내 corsOptions에서NodeJS - CORS 미들웨어`origin`이 정의되지 않았습니다.

if(process.env.NODE_ENV === 'production') { 
    var whitelist = ['http://mywebsite.com', 'https://mywebsite.com'] 
    var corsOptions = { 
     origin: (origin, callback) => { 
      var originIsWhitelisted = whitelist.indexOf(origin) !== -1; 
      console.log('ORIGIN: ', origin); // => undefined 
      callback(originIsWhitelisted ? null : 'Bad Request', originIsWhitelisted) 
     }, 
     credentials:true 
    } 
    app.use(cors(corsOptions)); 
    } 

origin 매개 변수 undefined입니다. 왜 그런가요? 어떻게 고칠 수 있습니까?

+1

는 https://github.com/expressjs/cors/issues/71 –

답변

0

미들웨어를 구성하는 방법입니다. 경로에서만 corsoptions를 적용해야합니다. 이것이 내가 문서화 된 것에 근거한 것입니다. 아직 테스트하지 않았습니다. 희망은 나중에 도움이 될 것입니다.

var whitelist = ['http://example1.com', 'http://example2.com'] 
var corsOptions = { 
    origin: function (origin, callback) { 
    var originIsWhitelisted = whitelist.indexOf(origin) !== -1 
    callback(originIsWhitelisted ? null : 'Bad Request', originIsWhitelisted) 
    } 
} 

app.get('/products/:id', cors(corsOptions), function (req, res, next) { 
    res.json({msg: 'This is CORS-enabled for a whitelisted domain.'}) 
}) 
+1

미들웨어의 전체 포인트는 경로의 많은에 주어진 연산을 적용하는 것입니다. 원하는 경우 미들웨어 수준에서 CORS를 사용할 수 있습니다. 또는 특정 경로에만 적용 할 수 있습니다. 당신은'app.get()'과 함께 사용할 필요가 없다. 'app.use()'와 함께 사용할 수 있습니다. – jfriend00

+0

확인. 나는 그것을 얻는다, 당신은 나의 이해를 정정했다. – digit

관련 문제