인프런 김영한님 [모든 개발자를 위한 HTTP 웹 기본 지식] 강의를 듣고 정리한 내용입니다.😊😊 1. 일반정보 👉 From 유저 에이전트의 이메일 정보 - 일반적으로 잘 사용되지 않음 - 검색 엔진 같은 곳에서, 주로 사용 - 요청에서 사용 👉 Referer 이전 웹 페이지 주소 - 현재 요청된 페이지의 이전 웹 페이지 주소 - A -> B로 이동하는 경우 B를 요청할 때 Referer: A를 포함해서 요청 - Referer를 사용해서 유입 경로 분석 가능 - 요청에서 사용 참고) referer는 단어 referrer의 오타 👉 User-Agent 유저 에이전트 애플리케이션 정보 - 클라이언트의 애플리케이션 정보(웹 브라우저 정보, 등등) - 통계 정보 - 어떤 종류의 브라우저에서 장애가 발생하는지 파..
인프런 김영한님 [모든 개발자를 위한 HTTP 웹 기본 지식] 강의를 듣고 정리한 내용입니다.😊😊 1. 단순 전송 Content-Length 설정 - Content-Length 알 수 있을 때 사용 - 데이터 전체를 한 번에 보낼 때 사용 2. 압축 전송 Content-Encoding 설정 - 전송해야하는 데이터가 커서 압축해서 보낼 때 사용(압축 방식은 다양함) 3. 분할 전송 Transfer-Encoding 설정, Content-Length 설정X - 대용량 데이터를 클라이언트에 보낼 때, 요청이 모두 처리되기 전까지 총 크기를 알 수 없을 때 사용 - r\n\ : 분할 전송의 끝을 표현 4. 범위 전송 Range 설정해서 요청 -> Content-Range 설정해서 응답 - 어떠한 이유로 중간에 재..
인프런 김영한님 [모든 개발자를 위한 HTTP 웹 기본 지식] 강의를 듣고 정리한 내용입니다.😊😊 1. 콘텐츠 협상(Contents Negotiation) 클라이언트가 선호하는 표현 요청 - 협상 헤더는 요청시에만 사용 1) Accept : 클라이언트가 선호하는 미디어 타입 전달 2) Accept-Charset: 클라이언트가 선호하는 문자 인코딩 3) Accept-Encoding: 클라이언트가 선호하는 압축 인코딩 4) Accept-Language: 클라이언트가 선호하는 자연 언어 👉 Accept-Language 적용 전 한국어 브라우저 사용하여 클라이언트에서 GET /event 요청을 보내면 서버는 클라이언트가 어떤 언어를 요청한 지 모르기 때문에 기본 언어인 영어로 응답한다. 👉 Accept-Lang..
인프런 김영한님 [모든 개발자를 위한 HTTP 웹 기본 지식] 강의를 듣고 정리한 내용입니다.😊😊 1. HTTP 헤더 👉 용도 - HTTP 전송에 필요한 모든 부가정보 ex) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보.. 등등 - 표준 헤더가 너무 많음 https://en.wikipedia.org/wiki/List_of_HTTP_header_fields - 필요시 임의의 헤더 추가 가능함 ex) helloworld : hihi 👉 분류 - RFC2616(과거) ● 헤더 분류 1) General 헤더 : 메시지 전체에 적용되는 정보, ex) Connection: close 2) Request 헤더 : 요청 정보, ex) User-Agent: Mo..
인프런 김영한님 [모든 개발자를 위한 HTTP 웹 기본 지식] 강의를 듣고 정리한 내용입니다.😊😊 1. 4XX (Client Error) - 클라이언트 오류 - 클라이언트의 요청에 잘못된 문법등으로 서버가 요청을 수행할 수 없음 - 오류의 원인이 클라이언트에 있음 - ⭐⭐ 클라이언트가 이미 잘못된 요청, 데이터를 보내고 있기 때문에, 똑같은 재시도가 실패함 👉 400 Bad Request 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음 - 요청 구문, 메시지 등등 오류 - 클라이언트는 요청 내용을 다시 검토하고, 보내야함 ex) 요청 파라미터가 잘못되거나, API 스펙이 맞지 않을 때 👉 401 Unauthorized 클라이언트가 해당 리소스에 대한 인증이 필요함 - 인증(Authentic..
인프런 김영한님 [모든 개발자를 위한 HTTP 웹 기본 지식] 강의를 듣고 정리한 내용입니다.😊😊 1. 3XX (Redirection) - 요청을 완료하기 위해 유저 에이전트(웹 브라우저)의 추가 조치가 필요 • 300 Multiple Choices (거의 안씀) • 301 Moved Permanently • 302 Found • 303 See Other • 304 Not Modified • 307 Temporary Redirect • 308 Permanent Redirect 2. 리다이렉션 이해 - 웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동(리다이렉트) 👉 자동 리다이렉트 흐름 1) 클라이언트가 GET /event 페이지를 서버에 요청한다. 2..
인프런 김영한님 [모든 개발자를 위한 HTTP 웹 기본 지식] 강의를 듣고 정리한 내용입니다.😊😊 1. HTTP 상태 코드 - 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 • 1xx (Informational): 요청이 수신되어 처리중 • 2xx (Successful): 요청 정상 처리 • 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요 • 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음 • 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함 🚨 만약에 모르는 상태 코드가 나타나면? - 클라이언트가 인식할 수 없는 상태코드를 서버가 반환하면? - 클라이언트는 상위 상태코드로 해석해서 ..
인프런 김영한님 [모든 개발자를 위한 HTTP 웹 기본 지식] 강의를 듣고 정리한 내용입니다.😊😊 1) 리소스를 식별하여 리소스만으로 URI를 설계한다. 2) 문서, 컬렉션, 스토어로 해결하기 어려운 상황의 경우, 컨트롤 URI를 사용한다. 1. HTTP API 설계 예시 POST 또는 PUT 기반으로 등록하는 2가지의 특징을 아는 것이 중요하다. POST 기반 신규 자원 등록 방법(컬렉션)을 많이 사용한다. 1) HTTP API - 컬렉션 - POST 기반 등록 ex) 회원 관리 API 제공 2) HTTP API - 스토어 - PUT 기반 등록 ex) 정적 컨텐츠 관리, 원격 파일 관리 3) HTML FORM 사용 - 웹 페이지 회원 관리 - GET, POST만 지원 👉 회원 관리 시스템 1) API ..
인프런 김영한님 [모든 개발자를 위한 HTTP 웹 기본 지식] 강의를 듣고 정리한 내용입니다.😊😊 1. 데이터 전달 방식은 크게 2가지 • 쿼리 파라미터를 통한 데이터 전송 - GET - 주로 정렬 필터(검색어) • 메시지 바디를 통한 데이터 전송 - POST, PUT, PATCH - 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 2. 4가지 상황 • 정적 데이터 조회 - 이미지, 정적 텍스트 문서 • 동적 데이터 조회 - 주로 검색, 게시판 목록에서 정렬 필터(검색어) • HTML Form을 통한 데이터 전송 - 회원 가입, 상품 주문, 데이터 변경 • HTTP API를 통한 데이터 전송 - 회원 가입, 상품 주문, 데이터 변경 - 서버 to 서버, 앱 클라이언트, 웹 클라이언트(Ajax) 👉 정..
인프런 김영한님 [모든 개발자를 위한 HTTP 웹 기본 지식] 강의를 듣고 정리한 내용입니다.😊😊 1. HTTP 메서드의 속성 • 안전(Safe Methods) • 멱등(Idempotent Methods) • 캐시가능(Cacheable Methods) 👉 안전 (Safe) • 호출해도 리소스를 변경하지 않는다. ✔ 안전 메서드 ✔ - 안전O: GET, HEAD - 안전X: POST, PUT, PATCH, DELETE Q: 그래도 계속 호출해서, 로그 같은게 쌓여서 장애가 발생하면요? A: 안전은 해당 리소스만 고려한다. 그런 부분까지 고려하지 않는다. 👉 멱등 (Idempotent) • f(f(x)) = f(x) • 한 번 호출하든 두 번 호출하든 100번 호출하든 결과가 똑같다. ✔ 멱등 메서드 ✔ -..