본문 바로가기

HTTP12

[12] HTTP : cache-control - 캐시 캐시는 느린 사용자 경험때문에 조금더 빠른 사용자 경험을 위해 탄생한 개념이다. 만약 클라이언트에서 변경되지 않은 리소스에 대해 서버로 계속 요청한다면 네트워크를 통해서 요청할때마다 데이터를 다운로드 받게된다. 인터넷 네트워크는 비싸고 느리며 브라우저 로딩속도또한 느리기 때문에 비효율적이다. 따라서 변하지 않은 리소스를 미리 브라우저 캐시에 저장해두고 빠르게 로딩하여 사용자 경험을 개선한다. 1) 클라이언트는 서버에 메세지를 보낸다. GET /star.jpg 2) 서버는 응답 메세지를 보낸다. HTTP/1.1 200 OK Content-Type: image/jpeg cache-control: max-age=3600 content-length: 34012 ... max-age=3600 은 3600.. 2021. 3. 29.
[11] HTTP 쿠키 HTTP 는 Stateless 프로토콜이다. 그래서 클라이언트와 서버가 요청을 주고 받고 나면 더 이상 연결을 유지하지 않는다. 그리고 이전 요청에 대해 서버는 기억하지 않는다. 그래서 Login 서비스와 같이 이전상태를 기억해야하는 서비스는 HTTP 프로토콜을 이용할때 한계가 있다. 그래서 등장한 것이 쿠키다. - 쿠키 동작 방식 1) 클라이언트가 서버에게 요청을 보냄 POST /login HTTP/1.1 id=abc&password=1234 2) 서버는 HTTP 메세지 Set-Cookie 에 다음과 같은 정보를 포함 시켜서 클라이언트에게 보냄 HTTP/1.1 200 OK Set-Cookie: sessionId=abcde1234; expires=Sat,26-Dec-2020 00:00:00 GMT; pa.. 2021. 3. 29.
[10] HTTP 메세지 전송방법 (단순,압축,분할,범위) 1. 단순 전송 Content-length 를 통해 보낼 데이터의 길이를 명시하며 한번에 보내고 한번에 받는다. ex) 1) 웹 브라우저가 서버에 GET /orderList 요청 2) 서버는 200 OK 와 Content-length: 3042 를 담고 메세지 본문에 { .... ... .... } HTML 을 담아서 웹 브라우저로 보냄. 2. 압축 전송 단순 전송과 비슷함. 다만 Content-Length 와 함께 Content-Encoding: gzip 을 헤더에 명시하고 본문에 압축된 메세지를 응답으로서 웹브라우저에 보낸다. Content-Encoding: gzip 은 예시 이며 gzip 외에도 다양한 압축 방식이 있다. 3. 분할 전송 Content-length 가 없다. 대신에 Transfer-.. 2021. 3. 29.
[9] HTTP content Negotiation (협상) HTTP 프로토콜은 웹 브라우저가 선호하는 내용을 가져오기 위해 서버와 협상할 수 있다. 서버에서 제공하는 컨텐츠가 브라우저에 지원하지 않는다면 클라이언트 입장에서 불편할 수 밖에없다. 따라서 서버에서 클라이언트가 선호하는 컨텐츠를 바탕으로 협상할 수 있는 메커니즘을 지원한다. 대표적으로 Accept 라는 이름이 붙은 HTTP Request가 해당한다. 요청시에만 사용! 1) Accept : 클라이언트가 선호하는 미디어 타입 2) Accept-Charset : 클라이언트가 선호하는 문자 인코딩 3) Accept-Encoding : 클라이언트가 선호하는 압축 인코딩 4) Accept-Language : 클라이언트가 선호하는 언어 Accept-Language를 사용하여 요청헤더 예시 GET /event Ac.. 2021. 3. 29.
[8] HTTP Redirection (3xx) - 리다이렉션 HTTP 상태코드가 3XX인 응답을 웹 브라우저에서 받는다. 응답된 메세지 헤더에 Location이 존재한다면 Location 위치로 자동 이동한다. "이동한다"의 뜻은 Location 을 다시 서버에 요청하여 해당 페이지로 이동한다는 의미다. - 영구 리다이렉션 (Permanent Redirection) 301 Moved Permanently - 원래 쓰던 uri 가 아닌 새로운 uri로 영구적으로 바뀌었을 때 사용한다. 1) GET /event 요청 2) 서버에서 301 Moved Permanently 와 Location: /new-event 를 클라이언트로 전송 3) 클라리언트에서는 GET /new-event 로 다시 서버에 요청 ( 이때 만약 본문이 존재했다면 제거될 확률 높음) 4.. 2021. 3. 29.
[7] 클라이언트에서 서버로 HTTP 데이터 전송 4가지 1. 정적 데이터 조회 쿼리 파라미터를 사용하지 않고 단순히 정적 데이터를 GET 메서드를 통해 조회 할 수 있다. 보통 정적 데이터 조회는 캐시를 사용하여 좀 더 효율적으로 조회할 수 있다. ex) GET /index.html 2. 동적 데이터 조회 쿼리 파라미터를 사용하여 클라이언트에서 원하는 정보를 조회할 수 있다. 주로 검색할 때 정렬필터를 쿼리파라미터로 사용한다. POST로 조회한다면 바디에 정렬필터를 포함하여 요청할 수 있으나 주로 GET을 사용한다. ex) GET /search?q=hello&hl=ko 3. HTML Form 을 통한 데이터 전송 Enter your name: Enter your email: 만약 POST로 데이터를 전송한다면 아래와 같은 HTTP 메세지가 생성된다. POST.. 2021. 3. 29.
[6] HTTP 메서드 - GET,POST,PUT - GET 출처 : developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET GET - HTTP | MDN GET The HTTP GET method requests a representation of the specified resource. Requests using GET should only be used to request data (they shouldn't include data). Note: Sending body/payload in a GET request may cause some existing implementations to reject developer.mozilla.org 1) get 메서드는 리소스 조회를 위한 용도로 사용된다. 2) 쿼.. 2021. 3. 29.
[5] HTTP 구조 위 그림은 클라이언트나 서버에서 HTTP/1.x 메세지로 생성하고 1.1 버전을 2버전으로 이진 바이너리 프레임으로 나뉘는 과정을 보여준다. 웹개발자가 손수 HTTP 메세지를 작성하지는 않기 때문에 브라우저나 서버 설정파일이 알아서 HTTP메세지를 작성해 준다. HTTP 요청과 응답의 구조는 서로 매우 닮았다. 그리고 엄청 심플해서 확장성도 좋다. 1. 시작라인 -요청 HTTP 메서드가 온다 ( GET, POST , PUT , .... ) HTTP 버전을 명시한다. 요청 대상의 URL을 명시한다. -응답 HTTP 버전 HTTP 상태코드 (200, 400, 500 등) 간단한 이유문구가 온다. 2. 헤더 헤더에 들어가는 내용은 아래의 템플릿을 따른다. field-name: OWS field-value OW.. 2021. 3. 20.
[4] HTTP 의 주요 특징 1. 거의 모든것을 전송 - HTTP 는 처음에 HTML을 전송하기 위해 고안한 프로토콜이였으나 이제는 모든 것을 전송할 수 있다. HTML,TEXT,IMAGE,영상등 거의 모든 형태의 데이터를 전송 할 수 있다. 2. HTTP 버전 = HTTP/1.1 , HTTP/2 , HTTP/3 1997년에 개발한 1.1 버전이 가장 많이 쓰인다고는 하나 구글이나 네이버는 1.1 프로토콜은 보이지 않는다. 실제 구글에 BTS를 검색했을 때 h3가 HTTP/3 이며 html 뿐만 아니라 스크립트,gif,png,font등 많은 데이터들이 HTTP3 프로토콜을 이용하여 전송되었다. HTTP/2 는 1.1버전의 성능을 좀더 업그레이드 한것이며 3버전은 UDP기반에서 HTTP프로토콜이 움직인다. 훨씬 빠르다. 네이버는 HT.. 2021. 3. 20.