인자 writeHead(상태코드 ,{ '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 };```
- | MDN 설명 | ex | - |
---|---|---|---|
Access-Control-Allow-Origin | ' * ' | 모든 도메인(*)을 허용한다 | |
Access-Control-Allow-Methods | preflight 요청에 대한 응답으로 리소스에 접근할 때 허용되는 메소드를 명시합니다. | 'GET, POST, PUT, DELETE, OPTIONS' | Methods |
Access-Control-Allow-Headers | 실제 요청을 만들 때 사용될 수 있는 HTTP 헤더를 나타내는 preflight 요청에 대한 응답으로 사용됩니다. | 'Content-Type, Accept' | 헤더에는 content-type과 accept만 쓸 수 있다 |
Access-Control-Max-Age | - | 10 | prefliht request는 10초까지 허용한다 |
- statusCode === status line
- object === headers
- start line : start line에는 요청이나 응답의 상태를 나타냅니다. 항상 첫 번째 줄에 위치합니다. 응답에서는 status line이라고 부릅니다.
- HTTP headers : 요청을 지정하거나, 메시지에 포함된 본문을 설명하는 헤더의 집합입니다.
- empty line : 헤더와 본문을 구분하는 빈 줄이 있습니다.
- body : 요청과 관련된 데이터나 응답과 관련된 데이터 또는 문서를 포함합니다. 요청과 응답의 유형에 따라 선택적으로 사용합니다.
교차 출처 리소스 공유 사전 요청은 본격적인 교차 출처 HTTP 요청 전에 서버 측에서 그 요청의 메서드와 헤더에 대해 인식하고 있는지를 체크하는 것입니다.
이것은
- HTTPHeader("Access-Control-Request-Method"),
- HTTPHeader("Access-Control-Request-Headers"),
- HTTPHeader("Origin") 총 3가지의
HTTP request headers 를 사용하는 HTTPMethod("OPTIONS") 요청입니다.
일부요청은 CORS preflight 를 트리거하지 않습니다. Fetch 명세(CORS를 정의한)는 이 용어를 사용하지 않지만, 이 기사에서는 "simple requests"라고 하겠습니다. "simple requests"는 다음 조건을 모두 충족하는 요청입니다
- 메서드 ( get,head,post)
- Content-Type 헤더
- application/x-www-form-urlencoded
- multipart/form-data
- text/plain
서버를 공부하고 작동을 시키다보니, HTTP 부분의 공부가 부족한거 같다 느껴졌다.
연결되어있는 부분이 많아 중요한 부분은 놓치지말고 기억해야겠다 생각했다.
낯설고 생소한 용어들을 이번에 정말 많이 만나서 기록을 잘해야겠다.
https://nodejs.org/ko/docs/guides/anatomy-of-an-http-transaction/
메우좋은 공식문서