본문 바로가기

Web/HTTP

(25)
[모든 개발자를 위한 HTTP 웹 기본 지식] 24.HTTP 최종 마무리 학습 내용 정리 인터넷 네트워크 인터넷 통신 IP( 인터넷 프로토콜 ) TCP, UDP PORT DNS URI와 웹 브라우저 요청 흐름 URI 웹 브라우저 요청 흐름 HTTP 모든 것이 HTTP 클라이언트 서버 구조 Stateful, Stateless 비 연결성( connectionless ) HTTP 메시지 HTTP 메서드 HTTP API를 만들어보자 -> HTTP API 만들기 첫 시도 HTTP 메서드 - GET, POST HTTP 메서드 - PUT, PATCH, DELETE HTTP 메서드의 속성 HTTP 메서드 활용 클라이언트에서 서버로 데이터 전송 HTTP API 설계 예시 HTTP 상태코드 HTTP 상재코드 소개 2xx - 성공 3xx - 리다이렉션1 - 영구 리다이렉션 3xx - 리다이렉션2..
[모든 개발자를 위한 HTTP 웹 기본 지식] 23.HTTP 헤더2 - 캐시와 조건부 요청 - 캐시 무효화( 5/5 ) Cache-Control 확실한 캐시 무효화 응답 Cache-Control: no-cache, no-store, must-revalidate Pragma: no-cache HTTP 1.0 하위 호환 캐시 지시어(directives) 확실한 캐시 무효화 Cache-Control: no-cache 데이터는 캐시해도 되지만, 항상 원 서버에 검증하고 사용(이름에 주의!) Cache-Control: no-store 데이터에 민감한 정보가 있으므로 저장하면 안됨 (메모리에서 사용하고 최대한 빨리 삭제) Cache-Control: must-revalidate 캐시 만료후 최초 조회시 원 서버에 검증해야함 원 서버 접근 실패시 반드시 오류가 발생해야함 - 504(Gateway Timeout) must-revalida..
[모든 개발자를 위한 HTTP 웹 기본 지식] 22.HTTP 헤더2 - 캐시와 조건부 요청 - 프록시 캐시( 4/5 ) 프록시 캐시 도입 프록시 캐시가 없다면, 원(origin)서버로 붙을 경우 모든 사람이 동일하게 오랜 시간 기다려야 한다. - 첫 번째 요청 글로벌 서비스의 경우 CDN(ex. AWS CloudFront, ...)를 많이 사용합니다. Cache-Control 캐시 지시어( directives )- 기타 Cache-Control: public 응답이 public 캐시에 저장되어도 됨 Cache-Control: private 응답이 해당 사용자만을 위한 것임, private 캐시에 저장해야 함(기본값) Cache-Control: s-maxage 프록시 캐시에만 적용되는 max-age Age: 60 (HTTP 헤더) 오리진 서버에서 응답 후 프록시 캐시 내에 머문 시간(초) 출처 https://www.infl..
[모든 개발자를 위한 HTTP 웹 기본 지식] 21.HTTP 헤더2 - 캐시와 조건부 요청 - 캐시와 조건부 요청 헤더( 3/5 ) 캐시 제어 헤더 Cache-Control: 캐시 제어 Pragma: 캐시 제어(하위 호환) Expires: 캐시 유효 기간(하위 호환) 1. Cache-Control 캐시 지시어( directives ) Cache-Control: max-age 캐시 유효 시간, 초 단위 Cache-Control: no-cache 데이터는 캐시해도 되지만, 항상 원(origin) 서버에 검증하고 사용 Cache-Control: no-store 데이터에 민감한 정보가 있으므로 저장하면 안됨 (메모리에서 사용하고 최대한 빨리 삭제) 2. Pragma 캐시 제어(하위 호환) Pragma: no-cache HTTP 1.0 하위 호환 3. Expires 캐시 만료일 지정(하위 호환) 캐시 만료일을 정확한 날짜로 지정 ex. exp..
[모든 개발자를 위한 HTTP 웹 기본 지식] 20.HTTP 헤더2 - 캐시와 조건부 요청 - 검증 헤더와 조건부 요청( 2/5 ) 검증 헤더와 조건부 요청 검증 헤더 캐시 데이터와 서버 데이터가 같은지 검증하는 데이터 Last-Modified , ETag 조건부 요청 헤더 검증 헤더로 조건에 따른 분기 If-Modified-Since: Last-Modified 사용 If-None-Match: ETag 사용 조건이 만족하면 200 OK 조건이 만족하지 않으면 304 Not Modified 예시 If-Modified-Since: 이후에 데이터가 수정되었으면? 데이터 미변경 예시 캐시: 2020년 11월 10일 10:00:00 vs 서버: 2020년 11월 10일 10:00:00 304 Not Modified, 헤더 데이터만 전송(BODY 미포함) 전송 용량 0.1M (헤더 0.1M, 바디 1.0M) 데이터 변경 예시 캐시: 2020년 ..
[모든 개발자를 위한 HTTP 웹 기본 지식] 19.HTTP 헤더2 - 캐시와 조건부 요청 - 캐시 기본 동작( 1/5 ) 캐시가 없을 때 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야 한다. 인터넷 네트워크는 매우 느리고 비싸다. 브라우저 로딩 속도가 느리다. 느린 사용자 경험 동일한 요청에 대해서 계속 네트워크를 통해서 동일한 응답을 해준다. 캐시 적용 캐시 덕분에 캐시 가능 시간동안 네트워크를 사용하지 않아도 된다. 비싼 네트워크 사용량을 줄일 수 있다. 브라우저 로딩 속도가 매우 빠르다. 빠른 사용자 경험 1. 첫 번째 요청 2. 두 번째 요청 1) 캐시 유효 시간 검증 2) 캐시에서 조회 3. 세 번째 요청 - 캐시 시간 초과 1) 캐시 유효 시간 검증 2) 캐시 갱신 ※ 캐시가 만료가 되었을 때, 클라이언트가 가진 데이터랑 서버가 가진 데이터랑 똑같을 경우 해당 데이터를 네트워크를 통해서..
[모든 개발자를 위한 HTTP 웹 기본 지식] 18.HTTP 헤더 - 일반 헤더 - 인증( 8/8 ) 쿠키 Set-Cookie: 서버에서 클라이언트로 쿠키 전달(응답) Cookie: 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달 Stateless HTTP는 무상태(Stateless) 프로토콜이다. 클라이언트와 서버가 요청과 응답을 주고 받으면 연결이 끊어진다. 클라이언트가 다시 요청하면 서버는 이전 요청을 기억하지 못한다. 클라이언트와 서버는 서로 상태를 유지하지 않는다. - 쿠키 미사용 로그인 이후 welcome 페이지 접근 서로 상태유지를 안하기 때문에 해당 유저가 누구인지 판단할 수가 없다. 대안 모든 요청에 사용자 정보 포함되도록 개발해야함 브라우저를 완전히 종료하고 다시 열 경우 유지 안됨 웹스토리지라는 걸 이용하면 되지만 별도로 개발해야함 - 쿠키 사용 쿠키 ex. ..
[모든 개발자를 위한 HTTP 웹 기본 지식] 17.HTTP 헤더 - 일반 헤더 - 인증( 7/8 ) 인증 Authorization: 클라이언트 인증 정보를 서버에 전달 WWW-Authenticate: 리소스 접근시 필요한 인증 방법 정의 1. Authorization 클라이언트 인증 정보를 서버에 전달 Authorization: Basic xxxxxxxxxxxxxxxx 2. WWW-Authenticate 리소스 접근시 필요한 인증 방법 정의 리소스 접근시 필요한 인증 방법 정의 401 Unauthorized 응답과 함께 사용 WWW-Authenticate: Newauth realm="apps", type=1, title="Login to \"apps\"", Basic realm="simple" 출처 https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%E..