본문 바로가기

Web

(48)
[모든 개발자를 위한 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..
[모든 개발자를 위한 HTTP 웹 기본 지식] 16.HTTP 헤더 - 일반 헤더 - 특별한 정보( 6/8 ) 특별한 정보 Host: 요청한 호스트 정보(도메인) Location: 페이지 리다이렉션 Allow: 허용 가능한 HTTP 메서드 Retry-After: 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간 1. Host 요청한 호스트 정보(도메인) 요청에서 사용 필수 하나의 서버가 여러 도메인을 처리해야 할 때 하나의 IP 주소에 여러 도메인이 적용되어 있을 때 여러 도메인을 가지고 있는 서버 애플리케이션일 경우에 아래와 같은 문제가 발생할 수 있다. a,b,c 중에서 어디로 들어가야하는지 알 방법이 없다. 그래서 Host header로 가상 호스팅을 구분해서 들어간다. 2. Location 페이지 리다이렉션 웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 ..
[모든 개발자를 위한 HTTP 웹 기본 지식] 15.HTTP 헤더 - 일반 헤더 - 일반 정보( 5/8 ) 일반 정보 From : 유저 에이전트의 이메일 정보 Referer : 이전 웹 페이지 주소 User-Agent : 유저 에이전트 애플리케이션 정보 Server : 요청을 처리하는 오리진 서버의 소프트웨어 정보 Date : 메시지가 생성된 날짜 1. From 유저 에이전트의 이메일 정보 일반적으로 잘 사용되지 않음 검색 엔진 같은 곳에서, 주로 사용 요청에서 사용 2. Referer 이전 웹 페이지 주소 현재 요청된 페이지의 이전 웹 페이지 주소 A -> B로 이동하는 경우 B를 요청할 때 Referer:A 를 포함해서 요청 Referer를 사용해서 유입 경로 분석 가능 요청에서 사용 참고 : refer는 단어 referrer의 오타 3. User-Agent 유저 에이전트 애플리케이션 정보 user-age..
[모든 개발자를 위한 HTTP 웹 기본 지식] 14.HTTP 헤더 - 일반 헤더 - 전송 방식( 4/8 ) 전송 방식 설명 단순 전송 압출 전송 분할 전송 범위 전송 1. 단순 전송 Content-Length 2. 압축 전송 Content-Encoding 뭐로 압축했는지 알기 위해서 Content-Encoding을 넘겨줘야 한다. 3. 분할 전송 Transfer-Encoding Content-Length를 보내면 안된다. 처음에 보낼 데이터의 길이가 가늠이 안된다. 4. 범위 전송 Range, Content-Range 출처 https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard 모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의 실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP AP..