목록HTTP (12)
봄디의 개발일지
캐시와 관련된 헤더는 크게 3가지가 있습니다. Cache-Control : 캐시 제어Pragma : 캐시 제어 (하위 호환) - 거의 사용하지 않는다. Expires : 캐시 유효 기간 (하위 호환)1️⃣ Cache-Control (⭐중요)Pragma, Expires 는 하위 호환으로 Cache-Control 로 다 할 수 있습니다. Cache-Control: max-ageCache-Control: no-cacheCache-Control: no-store✅ Cache-Control: max-agemax-age 는 앞 포스팅에서도 설명한 것처럼 캐시의 유효시간을 설정하며, 초 단위로 입력할 수 있습니다. Cache-Control: max-age=60 이라고 하면 캐시의 유효시간은 60초를 의미합니다. ✅..
2024.10.20 - [HTTP] - [HTTP] HTTP 헤더 - 캐시의 기본 동작 (검증 헤더) [HTTP] HTTP 헤더 - 캐시의 기본 동작 (검증 헤더)1️⃣ 만약 캐시가 없다면 ? 웹 브라우저가 star.jpg 라는 이미지를 서버에 요청을 했을 때 서버는 star.jpg 파일을 내려주고, HTTP 헤더와 star.jpg 에 관련된 내용이 들어있는 HTTP 바디를 포함한 HTTPbomdy.tistory.com✅ 지난 포스팅 정리지난 시간에는 캐시를 사용해야 하는 이유와, 캐시의 유효시간이 지났을 때 처리하는 방법 등에 대해 알아보았습니다. 또한 검증 헤더는 크게 Last-Modified 와 ETag 가 있고, Last-Modified 는 if-modified-since 와 같이 사용하고 ET..
1️⃣ 만약 캐시가 없다면 ? 웹 브라우저가 star.jpg 라는 이미지를 서버에 요청을 했을 때 서버는 star.jpg 파일을 내려주고, HTTP 헤더와 star.jpg 에 관련된 내용이 들어있는 HTTP 바디를 포함한 HTTP 응답 메시지를 내려줄 것입니다.이 때, HTTP 헤더는 0.1M , HTTP 바디는 1.0M 라고 가정을 하겠습니다. 만약, GET /star.jpg 라고 다시 웹 브라우저가 서버에게 요청을 한다면 서버는 다시 동일한 HTTP 응답 메시지를 만들어서 웹 브라우저에게 내려줄 것입니다. 이 때도 마찬가지로 1.1 M 를 사용하게 될 것입니다. (HTTP 헤더 0.1M + HTTP 바디 1.0M) 이처럼 캐시가 없다면 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다..
쿠키를 사용할 때는 2개의 헤더를 사용합니다.Set-Cookie : 서버에서 클라이언트로 쿠키 전달 (응답)Cookie : 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청 시 서버로 전달1️⃣ 만약 쿠키를 사용하지 않는다면 ? 쿠키를 사용하지 않고 로그인을 할 경우, 처음 로그인 할 때는 user=홍길동 이라는 정보를 서버에 전달하기 때문에서버에서도 홍길동님이 로그인했습니다. 라는 정보를 응답합니다. 그러나, 로그인 이후에 /welcome 이라는 페이지를 접근할 경우 안녕하세요, 홍길동님 이라는 결과를 기대했는데안녕하세요, 손님 이라고 서버에서 응답을 하게 된다.그 이유는 서버에서는 /welcome 에 접근한 사용자가 홍길동이라는 사실을 모르기 때문이다. HTTP 는 Stateless..
1️⃣ 전송 방식전송 방식은 크게 4가지로 나뉩니다. 단순 전송압축 전송분할 전송범위 전송 ✅ 단순 전송 (Content-Length) 단순 전송은 요청을 하면 메시지 바디에 대한 Content-Length 를 지정하는 것을 말합니다. 단순하게 요청을 하고, 한 번에 응답을 받는 방식을 의미합니다. ✅ 압축 전송 (Content-Encoding) 서버에서 gzip 같은 걸로 압축을 진행했을 때 어떤 걸로 압축을 진행했는 지에 대한 정보를 Content-Encoding 으로 알려줍니다. 그래야 클라이언트에서 응답을 받았을 때 압축된 정보를 알고 풀어서 사용할 수 있습니다. ✅ 분할 전송 (Transfer-Encoding) Transfer-Encoding: chunked 라고 있으면 chunk 는 ..
1️⃣ 개요HTTP 표준 RFC2616 이 폐기된 후 RFC7230~7235 가 등장하면서 바뀐 것들이 있습니다. 엔티티 (Entity) ➡ 표현 (Representation) 이라고 명칭이 들어오게 되고, 표현 (Representation) 은 표현 메타 데이터 + 표현 데이터 를 합쳐서 부르게 됩니다. 메시지 본문을 통해서 표현 데이터를 전달합니다. 메시지 본문은 페이로드 (payload) 라고도 부릅니다. 표현은 요청이나 응답에서 전달할 실제 데이터라고 합니다. 표현 헤더는 데이터 유형(html, json) , 데이터 길이, 압축 정보 등등 표현 데이터를 해석할 수 있는 정보를 제공합니다. (표현 헤더는 표현 메타데이터와 페이로드 메시지를 구분해야 하지만, 여기서는 생략하도록 하겠습니다.) 2️..
클라이언트에서 서버로 데이터를 전송하는 방법은 크게 2가지가 있습니다. 1. 쿼리 파라미터를 통한 데이터 전송GET 에서 많이 사용주로 정렬 필터, 검색어를 입력할 때 많이 사용2. 메시지 바디를 통한 데이터 전송HTTP 메서드 중에서 POST, PUT, PATCH 를 주로 사용회원 가입, 상품 주문, 리소스 등록, 리소스 변경할 때 많이 사용클라이언트에서 서버로 데이터를 전송하는 것을 크게 4가지 상황으로 분류할 수 있습니다. 정적 데이터 조회동적 데이터 조회HTML Form을 통한 데이터 전송HTTP API를 통한 데이터 전송1️⃣ 정적 데이터 조회 (쿼리 파라미터 미사용) 클라이언트에서 서버로 /static/star.jpg 를 요청하면, 서버에서는 별 이미지를 클라이언트에게 내려주면 됩니다. 이..
1️⃣ 상태 코드상태코드란 ? 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능입니다. 클라이언트가 서버로 요청을 보내면 그 요청이 잘 처리가 됐는지, 아니면 뭔가 문제가 있는지를 응답이 올 때 알려줍니다. 상태코드는 100, 200, 300, 400, 500 대로 크게 5가지로 나뉩니다. 1xx (Informational) : 요청이 수신되어 처리중 (거의 사용X)2xx (Successful) : 요청 정상 처리3xx (Redirection) : 요청을 완료하려면 추가 행동이 필요4xx (Client Error) : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음5xx (Server Error) : 서버 오류, 서버가 정상 요청을 처리하지 못함 ✅ 만약 모르는 상태 코..
1️⃣ HTTP 메서드 종류GET : 리소스 조회POST : 요청 데이터 처리, 주로 등록에 사용PUT : 리소스를 대체, 해당 리소스가 없으면 생성PATCH : 리소스 부분 변경DELETE : 리소스 삭제2️⃣ GET (리소스 조회)GET /search?q=hello&hl=ko HTTP/1.1HOST: www.google.com GET 메서드는 리소스를 조회할 때 사용하며, 서버에 전달하고 싶은 데이터는 쿼리 파라미터, 쿼리 스트링을 통해서 전달합니다. 메시지 바디를 사용해서 데이터를 전달할 수 있지만, 권장하는 방법은 아닙니다. 클라이언트에서 /members/100 에 있는 내용을 달라고 GET 메소드를 통해서 서버에 전달하면, 서버에서 /members/100 에 있는 { "username"..
1️⃣ HTTP 란 ?HTTP 란 HyperText Transfer Protocol 의 줄임말로, 현재는 HTTP 메시지에 모든 것을 전송합니다.HTML 텍스트뿐만 아니라 이미지, 음성, 영상, 파일 그리고 서버끼리 통신할 때 사용하는 JSON, XML 등등 거의 모든 형태의 데이터를 다 전송할 수 있습니다. 그리하여 지금은 HTTP 시대 !! 라고 말할 수 있습니다. HTTP 버전 중에 HTTP/1.1 을 가장 많이 사용하고 있습니다. 그 이후로도 HTTP/2 , HTTP/3 이 나왔지만 HTTP/1.1 에 성능 개선이 추가된 거라고 생각하시면 됩니다. HTTP/1.1 과 HTTP/2 는 TCP 프로토콜을 기반으로 동작하며, HTTP/3 은 UDP 기반으로 개발이 되어있습니다. HTTP 의 특징으..