Express.js 웹 프레임 워크를 사용하는 Node.js 응용 프로그램에서 CORS를 지원하려고합니다. 나는 읽고 구글 그룹 토론 이 처리하는 방법과 CORS 작품에 대한 몇 가지 기사를 읽는 방법에 대한합니다. 먼저, 이것을했습니다 (코드는 CoffeeScript 구문으로 작성되었습니다).
app.options "*", (req, res) ->
res.header 'Access-Control-Allow-Origin', '*'
res.header 'Access-Control-Allow-Credentials', true
# try: 'POST, GET, PUT, DELETE, OPTIONS'
res.header 'Access-Control-Allow-Methods', 'GET, OPTIONS'
# try: 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept'
res.header 'Access-Control-Allow-Headers', 'Content-Type'
# ...
작동하지 않는 것 같습니다. 내 브라우저 (Chrome)가 초기 OPTIONS 요청을 보내지 않는 것 같습니다. 리소스에 대한 블록을 방금 업데이트했을 때 교차 출처 GET 요청을 제출해야합니다.
app.get "/somethingelse", (req, res) ->
# ...
res.header 'Access-Control-Allow-Origin', '*'
res.header 'Access-Control-Allow-Credentials', true
res.header 'Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS'
res.header 'Access-Control-Allow-Headers', 'Content-Type'
# ...
작동합니다 (Chrome에서). 이것은 Safari에서도 작동합니다.
나는 그것을 읽었습니다 ...
CORS를 구현하는 브라우저에서 각 교차 출처 GET 또는 POST 요청 앞에 GET 또는 POST가 올바른지 확인하는 OPTIONS 요청이옵니다.
그래서 내 주요 질문은, 어떻게 이런 일이 일어나지 않는 것입니까? 왜 app.options 블록이 호출되지 않습니까? 기본 app.get 블록에서 헤더를 설정해야하는 이유는 무엇입니까?