2013-12-21 4 views
3

저는 CORS를 릴 앱에 구현했습니다. 노드 복구를 사용하여 테스트했는데 브라우저에서 동작이 예상과 다른 것으로 나타났습니다. CORS가 비활성화되어 있으면 작동하지 않습니다. CORS가 활성화되어 있으면 작동합니다.cURL을 사용하여 CORS 테스트하기

그러나 까다로운 부분은 CURL을 사용하면 항상 효과가 있습니다! 나는이 일을 해요 How can you debug a CORS request with cURL?

: 나는이 질문에 다음과 같은 봤는데

curl -H 'Origin: http://example.com' http://cors.somewhere.com 

을 그리고 내가 무엇을 놓치고

var restify = require('restify'); 

var srv = restify.createServer(); 
//srv.use(restify.CORS()); // I enable and disable by uncomment line 

function foo(req, res, next) { 
     res.send("bananas"); 
     next(); 
} 

srv.put('/foo', foo); 
srv.get('/foo', foo); 
srv.del('/foo', foo); 
srv.post('/foo', foo); 

srv.listen(process.env.PORT || 8080); 

디버그 할 노드 restify 예를 사용하고 계십니까?

감사합니다.

+0

돌아 오는 CORS 헤더를 확인해야합니다. 또한 "비행 전"요청을보십시오. –

+1

CORS 보안은 사용자를 보호하기 위해 브라우저가 아닌 서버에서 구현합니다. – damphat

답변

4

컬이 요청을하지 못하도록하는 방법이 있는지 묻는 것처럼 들립니다. 이건 불가능 해. 컬은 항상 CORS의 유무에 관계없이 서버에 요청할 수 있습니다.

그러나 컬을 사용하여 브라우저를 모방하고 서버가 CORS 요청에 어떻게 반응하는지 확인할 수도 있습니다. curl 요청에 --verbose 플래그를 사용하면 HTTP 요청 및 응답 헤더를보고 CORS 헤더가 예상대로 작동하는지 확인할 수 있습니다. 이것이이 질문의 내용입니다. How can you debug a CORS request with cURL?

CORS가 활성화 된 경우 응답에 Access-Control-Allow-Origin 헤더가 표시되어야합니다. CORS가 비활성화되어 있으면 응답에 Access-Control-* 헤더가 표시되지 않아야합니다.

관련 문제