CORS
- Cross-Origin Resource Sharing
- 하나의 서버에서 resource를 요청하는 것은 의심의 여지 없이 요청에 응답
- 클라이언트나 앱의 고도화로, 다른 서버에 있는 resource를 활용할 필요가 생기기 시작함
- 초기에는 요청 자체를 막았으나, 현재는 서버에서 allow한 범위 내에서만 요청을 받기로 함
- 다른 서버에게 리소스를 요청하는 규약을 만들고, 그에 맞게 요청함
- OPTIONS를 통해 preflight request를 보내고, 서버는 allow요청인지 사전 확인을 해준다
- allow한지 확인한 후에 서버에서 OK 응답을 보내면, POST로 resource를 요청한다.
const defaultCorsHeader = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, Accept',
'Access-Control-Max-Age': 10
};
- HTTP 트랜잭션
- request header의 Content-Type을 application/json에서 text/plain으로 수정할 경우, preflight request가 발생하지 않는다
- text/plain: normal text, 즉 일반적인 평문의 글을 의미함, html도 이에 해당됨
- application/json: JavaScript Object Notation JSON 형태를 의미함
- 요청의 형태가 바뀌어 인식을 못하는 것으로 이해됨 (차후 보충 할 것)