웹 공부하기/HTTP

    [인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 (HTTP 헤더 - 캐시와 조건부 요청2)

    캐시 제어 헤더와 조건부 요청 헤더에 대해 알아보고, 프록시 캐시와 캐시 무효화하는 방법까지 살펴보자. 캐시와 조건부 요청 헤더 캐시 제어 헤더 cache-control: 여러 지시어를 통해 캐시를 제어함 max-age 캐시 유효 시간을 초 단위로 작성하는 지시어 no-cache 데이터는 캐시해도 되지만, 항상 원서버(Origin Server)에 검증하고 사용 no-store 데이터에 민감한 정보가 있으므로 저장하면 안됨 → 메모리에서 사용하고 최대한 빨리 삭제 public 응답(데이터)이 public 캐시에 저장되어도 됨 private 응답(데이터)이 해당 사용자만을 위한 것임, 원래 기본값으로 private 캐시에 저장해야 함 must-revaildate 캐시 만료 후 최초 조회시, 원서버(Origi..

    [인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 (HTTP 헤더 - 캐시와 조건부 요청1)

    캐시의 기본 동작에 대해 알아보고 검증 헤더와 조건부 요청이 어떻게 이루어지는지 살펴보자. 캐시 기본 동작 클라이언트가 서버에 어떤 이미지를 요청했다고 가정해보자. 캐시가 없을 때 클라이언트가 처음과 같은 이름의 이미지를 한 번 더 요청했을 때 이미지가 변경되지 않아도 서버는 같은 이미지를 전송해준다. 인터넷 네트워크는 느리고 비싼데, 데이터가 변경되지 않아도 계속 네트워크를 통해 데이터를 다운받아야 한다. 브라우저 로딩 속도가 느려 사용자에게 불편함을 준다. 캐시 적용 서버가 처음 이미지를 줄 때, cache-control: max-age=60 라는 헤더 필드를 전달하면서 캐시가 적용된다. 이 필드는 캐시가 유효한 시간을 초단위로 나타낸다. 응답 결과를 브라우저 캐시에 저장해두고, 이 예시에서는 60초..

    [인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 (HTTP 헤더 - 정보, 인증, 쿠키)

    HTTP 헤더 중 정보, 인증, 쿠키에 대해 알아보자. 일반 정보 from: 유저 에이전트의 이메일 정보를 담음 요청에서 사용 일반적으로 잘 사용되지 않지만, 검색 엔진 같은 곳에서 사용됨 referer: 현재 요청된 페이지의 이전 웹 페이지 주소를 담음 요청에서 사용 이를 통해 유입 경로를 분석할 수 있음 user-agent: 클라이언트의 애플리케이션 정보 (웹 브라우저 정보 등)를 담음 요청에서 사용 어떤 종류의 브라우저에서 장애가 발생하는지 파악 가능 server: 요청을 처리하는 ORIGIN 서버의 소프트웨어 정보를 담음 응답에서 사용 ORIGIN 서버: 요청이 서버로 전달될 때 까지 여러 프록시 서버를 거쳐가는데, 그 중 맨 마지막 서버 = 클라이언트가 요청한 데이터를 제공하는 서버 date: ..

    [인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 (HTTP 헤더 - 표현, 협상, 전송 방식)

    HTTP 헤더가 무엇인지와 HTTP 헤더의 종류 중 일반헤더에 대해 알아보자. HTTP 헤더 개요 헤더 필드는 field-name: field-value 형태이며, field-name은 대소문자 구분하지 않는다. HTTP 헤더에는 HTTP 전송에 필요한 모든 부가정보를 담는다. ex) 메세지 바디의 크기, 압축, 인증, 서버 정보 ... 표준 헤더가 엄청 많고, 필요 시에는 임의의 헤더도 추가 가능하다. 헤더 분류 General 헤더: 메세지 전체에 적용되는 정보 ex) Connection: close Request 헤더: 요청 정보 ex) User-Agent: Mozilla/5.0 Response 헤더: 응답 정보 ex) Server: Apache Entity 헤더 → 표현 헤더: 엔티티 바디 → 표현..

    [인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 (HTTP 상태코드 - 4xx, 5xx)

    HTTP 상태코드 중, 4xx 오류와 5xx 오류에 대해 알아보자. 4xx - 클라이언트 오류 400대 상태코드는 클라이언트의 요청에 잘못된 문법 등으로 서버가 요청을 수행할 수 없을 때를 뜻한다. 즉, 오류의 원인이 클라이언트한테 있다는 것이다. 이때, 같은 요청을 계속 재시도해도 이미 클라이언트 단에서 잘못된 요청과 데이터를 보내고 있기 때문에 요청에 실패한다. 400 Bad Request: 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없다. 클라이언트는 요청 내용을 검토하고 다시 보내야한다. ex) 요청 파라미터가 숫잔데 문자로 보낸다거나, API 스펙이 맞지 않는다거나 ... 401 Unauthorized: 클라이언트가 해당 리소스에 대한 인증이 필요하다. 여기서 인증은 로그인을 의미..

    [인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 (HTTP 상태코드 - 2xx, 3xx)

    HTTP 상태코드가 지닌 의미와 자주 사용되는 코드를 살펴보자. HTTP 상태코드 소개 상태코드란? 클라이언트가 보낸 요청의 처리 상태를 서버가 응답할 때 숫자 코드로 알려주는 기능 1xx (Informational): 요청이 수신되어 처리되고 있음을 알려줌 → 실무에서 거의 사용되지 않음! (생략) 2xx (Successful): 요청이 정상적으로 처리됨을 알려줌 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요한 상황임을 알려줌 4xx (Client Error): 클라이언트 딴에서의 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없다고 알려줌 5xx (Server Error): 서버 딴에서의 오류, 서버 장애 등으로 서버가 정상 요청을 처리하지 못한다고 알려줌 서버에서 클라이..

    [인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 (HTTP API 설계 예시)

    HTTP API를 어떻게 설계하는지 예시를 통해 알아보자. HTTP API - 컬렉션 (POST 기반 등록) 회원 관리 API를 예로 든다. 여기서는 회원이 리소스이니까, 리소스 URI를 /members 로 정했다. 회원 목록, 등록, 조회, 수정, 삭제 기능이 있을 때, 신규 회원을 등록하는 상황을 보자. 회원 등록은 POST 메서드를 사용하며, 클라이언트는 새로 등록될 리소스의 URI를 모른다. 따라서 POST /members라고 서버에 보내면, 서버가 새로 등록된 리소스 URI를 생성해 알려준다. Location: /members/100 이렇게 서버가 관리하는 리소스 디렉토리를 컬렉션(Collection)이라고 한다. 컬렉션은 서버가 리소스의 URI를 생성하고 관리한다. 그럼 이 예시에서는 컬렉션이..

    [인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 (HTTP 메서드 활용)

    HTTP 메서드를 어떻게 사용할 수 있는지 예시를 보며 확인해보자. 클라이언트에서 서버로 데이터 전송 데이터 전달 방식은 크게 2가지이다. 쿼리 파라미터를 통한 데이터 전송: GET, 주로 검색 시 메세지 바디를 통한 데이터 전송: POST, PUT, PATCH, 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 시 다음 4가지 상황을 예시로 살펴보자. 정적 데이터 조회 데이터 조회니까 GET 메서드를 사용하며, request-line에 조회하고 싶은 정적 데이터 URI를 적어 보낸다. 보통 이미지, 정적 text 문서를 조회할 때 사용하며, 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능하다. 동적 데이터 조회 동적 데이터는 주로 검색이나 게시판 목록에서 정렬 필터 등을 의미하며, 조회는 GET..