http
HTTP 상태 코드 res.writeHead 첫번째 인자로 성공을 알리는 상태 코드인 200을 넣어주었는데, 브라우저는 서버에서 보내주는 상태 코드를 보고 요청이 성공했는지 실패했는지를 판단합니다.
- 2XX: 성공을 알리는 상태 코드입니다. 대표적으로 200(성공),201(작성됨)이 많이 사용됩니다.
- 3XX: 리다이렉션(다른페이지로이동)을 알리는 상태 코드입니다. 어떤 주소를 입력했는데 다른 주소의 페이지로 넘어갈 때 이 코드가 사용됩니다.
- 4XX: 요청 오류를 나타냅니다. 됴청 자체에 오류가 있을 때 표시 됩니다. 대표적으로 401(권한 없음),403(금지된),404(찾을 수 없음)이 있습니다.
- 5XX: 서버 오류를 나타냅니다. 요청은 제대로 왔지만 서버에 오류가 생겼을 때 발생합니다. 이 오류가 뜨지 않게 주의해서 프로그래밍해야 합니다. 이오류를 클라이언트로 res.writeHead로 직접 보내는 경우는 없고, 예기치 못한 에러 발생 시 서버가 알아서 5XX 코드를 보냅니다. 500(내부 서버 오류), 502(불량 게이트웨이), 503(서비스를 사용할 수 없음)이 자주 사용됩니다.
헤더와 본문 요청과 응답은 모두 헤더와 본문을 가지고 있습니다. 헤더는 요청 또는 응답에 대한 정보를 가지고 있는곳이고. 본문은 서버와 클라이언트간에 주고받을 실제 데이터를 담아주는 공간입니다. 쿠기는 부가적인 정보이므로 헤더에 저장합니다.
General은 공통된 헤더이고, Request Headers는 요청의 헤더, Response Headers는 응답의 헤더입니다. 수많은 헤더가 있지만 Response Headers의 Set-Cookie와 Request Headers의 Cookie만 보면 됩니다.응답의 Set-Cookie는 부라우저에게 해당 쿠키를 심으라는 명령을 내리는 것입니다. 브라우저는 쿠키를 심은 후, 다음부터 요청을 보낼 때 Request Headers에 Cookie로 쿠키를 보냅니다.
res.end로 보내주었던 문자열 Response 단숨히 쿠키만 심었을 뿐 , 그 쿠키가 나인지를 식별해주지 못하고 있습니다. 다음 예제에서 식별하는 방법에 대해 알아봅시다.
``` STATUS_CODES: { ‘100’: ‘Continue’, ‘101’: ‘Switching Protocols’, ‘102’: ‘Processing’, ‘103’: ‘Early Hints’, ‘200’: ‘OK’, ‘201’: ‘Created’, ‘202’: ‘Accepted’, ‘203’: ‘Non-Authoritative Information’, ‘204’: ‘No Content’, ‘205’: ‘Reset Content’, ‘206’: ‘Partial Content’, ‘207’: ‘Multi-Status’, ‘208’: ‘Already Reported’, ‘226’: ‘IM Used’, ‘300’: ‘Multiple Choices’, ‘301’: ‘Moved Permanently’, ‘302’: ‘Found’, ‘303’: ‘See Other’, ‘304’: ‘Not Modified’, ‘305’: ‘Use Proxy’, ‘307’: ‘Temporary Redirect’, ‘308’: ‘Permanent Redirect’, ‘400’: ‘Bad Request’, ‘401’: ‘Unauthorized’, ‘402’: ‘Payment Required’, ‘403’: ‘Forbidden’, ‘404’: ‘Not Found’, ‘405’: ‘Method Not Allowed’, ‘406’: ‘Not Acceptable’, ‘407’: ‘Proxy Authentication Required’, ‘408’: ‘Request Timeout’, ‘409’: ‘Conflict’, ‘410’: ‘Gone’, ‘411’: ‘Length Required’, ‘412’: ‘Precondition Failed’, ‘413’: ‘Payload Too Large’, ‘414’: ‘URI Too Long’, ‘415’: ‘Unsupported Media Type’, ‘416’: ‘Range Not Satisfiable’, ‘417’: ‘Expectation Failed’, ‘418’: “I’m a Teapot”, ‘421’: ‘Misdirected Request’, ‘422’: ‘Unprocessable Entity’, ‘423’: ‘Locked’, ‘424’: ‘Failed Dependency’, ‘425’: ‘Too Early’, ‘426’: ‘Upgrade Required’, ‘428’: ‘Precondition Required’, ‘429’: ‘Too Many Requests’, ‘431’: ‘Request Header Fields Too Large’, ‘451’: ‘Unavailable For Legal Reasons’, ‘500’: ‘Internal Server Error’, ‘501’: ‘Not Implemented’, ‘502’: ‘Bad Gateway’, ‘503’: ‘Service Unavailable’, ‘504’: ‘Gateway Timeout’, ‘505’: ‘HTTP Version Not Supported’, ‘506’: ‘Variant Also Negotiates’, ‘507’: ‘Insufficient Storage’, ‘508’: ‘Loop Detected’, ‘509’: ‘Bandwidth Limit Exceeded’, ‘510’: ‘Not Extended’, ‘511’: ‘Network Authentication Required’ }, `