Fairy ' s

[22. March] HTTP #1 / TIL 본문

Devops Bootcamp

[22. March] HTTP #1 / TIL

berafairy 2023. 3. 22. 11:05

 

Runtime (런타임)
- 프로그램을 실행하는 환경
- JavaScript의 런타임은 node.js이다.

NPM (Node Package Manager)
- 필요한 모듈을 다운로드 할 수 있는 모듈 스토어
- 리눅스의 패키지 매니저가 apt이고 macOS의 패키지가 brew이듯, node.js 생태계의 패키지 매니저는 npm이다.
- package.json : 프로그램을 실행시키기 위해 필요한 모듈의 이름, 실행 방법, 테스트 방법 등이 명시되어 있다.
  프로그램을 실행시키기 위해 필요한 실제 모듈은 따로 'node_modules'라는 폴더에 저장되어 있다.
- package.json 에서 필요하다고 하는 모듈은 npm install 명령어를 입력하면 node_modules 라는 디렉토리가 생기며 자동 다운로드 된다.


Cookie 

  • 서버에서 클라이언트에 데이터를 저장하는 방법이며, 무상태성(stateless)인 HTTP에서 정보가 유지되게 한다.
  • 쿠키는 오랜 시간 유지될 수 있고, 자바스크립트를 이용해 접근할 수 있기 때문에 쿠키에 민감한 정보를 담는 것은 위험하다.
  • Cookie Options
옵션 설명
Domain 서버와 요청의 도메인이 일치하는 경우 쿠키 전송
Path 서버와 요청의 세부경로가 일치하는 경우 쿠키 전송
MaxAge or Expires 쿠키의 유효기간 설정
HttpOnly 스크립트의 쿠키 접근 가능 여부 결정
Secure HTTPS 프로토콜에서만 쿠키 전송 여부 결정
SameSite CORS 요청의 경우 옵션 및 메서드에 따라 쿠키 전송 여부 결정
Lax : Cross-Origin 요청이면 'GET' 메소드에 대해서만 쿠키 전송
Strict : same-site 경우에만 쿠키 전송
None : 항상 쿠키를 보낼 수 있지만, Secure 옵션이 필요하다.

HTTP 헤더

요청 헤더 옵션

  • From : 유저 에이전트의 이메일 정보 / 일반적으로 검색 엔진에서 주로 사용하며, 잘 사용하지 않는다. 
  • Referer : 현재 요청된 페이지의 이전 웹 페이지 주소 / 유입 경로 수집 가능
  • User-Agent : 클라이언트의 애플리케이션 정보 / 어떤 종류의 브라우저에서 장애가 발생하는지 파악 가능
  • Host : 필수 헤더, 요청한 호스트 정보 / 하나의 서버가 여러 도메인을 처리하거나, 하나의 IP 주소에 여러 도메인이 적용되어 있을 때 호스트 정보를 명시하기 위해 사용
  • Origin : 서버로 POST 요청을 보낼 때, 요청을 시작한 주소를 나타냄 / 요청 주소와 받는 주소가 다르면 CORS 에러가 발생
  • Authorization : 인증 토큰(e.g. JWT)을 서버로 보낼 때 사용하는 헤더 / 토큰의 종류(ex. Basic) + 실제 토큰 문자 를 전송

 

응답 헤더 옵션

  • Server : 요청을 처리하는 ORIGIN 서버의 소프트웨어 정보 / ex. Server : Apache/2.2.22(Debian), nginx
  • Date : 메시지가 발생한 날짜와 시간 / ex. Date : Wed, 22 Mar 2023 13:00:00 GMT
  • Location : 페이지 리디렉션 / 웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, 그 위치로 리다이렉트 함
    - 201 (Created) : Location 값은 요청에 의해 생성된 리소스 URI
    - 3xx (Redirection) : Location 값은 요청을 자동으로 리디렉션 하기 위한 대상 리소스를 가리킴
  • Allow : 허용 가능한 HTTP 메서드 / 405(Method Not Allowed) 응답에 포함 / ex. Allow:GET, HEAD, PUT
  • Retry-After : 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간 / 503(Service Unavailable): 서비스가 언제까지 불능인지 알려줄 수 있음 / ex. Retry-After : Fri, 31 Dec 2024 23:59:59 GMT , Retry-After : 120(초 단위 표기)

 표현 헤더 (Representation Headers)
- 표현 데이터를 해석할 수 있는 정보를 제공한다. / 데이터 유형, 길이, 압축 정보 등

  • HTTP 메시지
    - header : HTTP 전송에 필요한 모든 부가정보를 담기 위해 사용하며, 필요 시 임의의 헤더 추가가 가능하다.
      부가 정보 : 메시지 바디 내용, 크기, 압축, 인증, 요청 클라이언트 서버 정보, 캐시 관리 정보 등
      형식 : <field-name> : <field-value>
    - body :  메시지 본문(Message body)을 통해 표현 데이터를 전달한다.
    - payload : 데이터를 실어 나르는 부분
Field-name 설명
Content-Type 표현 데이터의 형식 / 미디어 타입, 문자 인코딩
ex. Content-Type: text/html;charset=UTF8
Content-Type: application/json       
Content-Encoding 표현 데이터의 압축 방식
- 데이터를 전달하는 곳에서 압축 후 인코딩 헤더 추가
- 데이터를 읽는 곳에서 인코딩 헤더의 정보로 압축 해제
ex. Content-Encoding: gzip / deflate / identity
Content-Language 표현 데이터의 자연 언어
ex. Content-Language: ko / en / en-US
Content-Length 표현 데이터의 길이 / 바이트 단위
- *Transfer-Encoding(전송 코딩)을 사용하면 Content-Length를 사용하면 안된다.
ex. Content-Length: 5

콘텐츠 협상 헤더 (Content negotiation Headers)
- 클라이언트가 선호하는 표현 요청으로, 요청 시에만 사용한다.

  • Accept : 클라이언트가 선호하는 미디어 타입 전달
  • Accept-Charset : 클라이언트가 선호하는 문자 인코딩
  • Accept-Encoding : 클라이언트가 선호하는 압축 인코딩
  • Accept-Language : 클라이언트가 선호하는 자연 언어
    - 1부터 0까지 언어에 대한 우선순위를 부여하여 순서대로 지원하는 언어로 응답을 준다.
    - ex. Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7 

 

* Transfer-Encoding : 전송 시 어떤 인코딩 방법을 사용할 것인가를 명시하며, chunked 방식을 사용한다.

'Devops Bootcamp' 카테고리의 다른 글

[23. March] REST API / TIL #1  (0) 2023.03.23
[22. March] HTTP #2 / TIL  (0) 2023.03.22
[16. March] HTTP messages / TIL  (0) 2023.03.16
[15. March] 웹 서비스 접근 / TIL #2  (2) 2023.03.15
[15. March] 클라이언트 - 서버 / TIL #1  (0) 2023.03.15
Comments