HTTP 메시지
[공통헤더]
- Date
Date: Thu, 12 Jul 2018 03:12:27 GMT
- 만들어진 시간
- Connection
Connection: keep-alive
- 사실 별의미는 없다
- 2에서는 사라짐
- Cache-Control (중요)
- 브라우저 응답으로 온 HTML이나 JSON 데이터가 저장되어 나중에 서버 요청없이 브라우저에 저장된 값이용
- 보통 GET request에만 요청을 한다
Cache-Control: 옵션
- , 로 옵션 혼합 가능
no-store
no-cache
- 모든 캐시를 쓰기 전에 서버에 확인
- 캐싱 안한다는 의미아님!
must-revalidate
public 또는 private
- 공유 캐시(or 프록시 서버)에 저장해도 되는지 브라우저 같은 특정 사용자 환경에만 저장할지
max-age=3600
- Age
- Expire
- 캐시 만료시간
- max-age 옵션 있을시 이 헤더는 무시된다
- ETag
- HTTP 컨텐츠가 바뀌었는지
- 캐쉬 업데이트 필요한지 확인
- Content-Length
- 요청과 응답 메시지의 본문 크기를 바이트 단위로 표시
- Content-type
Content-Type: text/html; charset=utf-8
- 컨텐츠의 타입(MIME)과 문자열 인코딩을 명시
- Accept 헤더, Accept-Charset헤더와 대응
- 프런트엔드에서 서버로 데이터 보낼때는
text/html
이런 것 대신 www-url-form-encoded
나 multipart/form-data
같은 게 Content-Type
- Content-Language
- Content Encoding
Content-Encoding: gzip, deflate
- 컨텐츠의 압축방식 브라우저가 이걸 확인해서 압축 해제해서 사용
[요청]
- 메세지 구조
- 요청 라인 : GET / HTTP/1.1
- 요청 메소드 : GET, POST, PUT, DELETE
- 요청 URL
- HTTP 버전
- 요청 헤더 : 키-값 방식으로 들어감
- Host
Host: www.tmon.com
- 서버의 도메인 네임
- User-Agent
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
- 유저가 어떤 클라이언트를 이용해서 요청을 보냈는지 확인
- IE로 접속한 유저 차단 가능
- Accept 시리즈
- 서버에 이런타입의 데이터를 보내줬으면 좋겠다고 명시할때 사용
Accept: text/html
Accept: image/png, image/gif
Accept: text/*
Accept-Charset: utf-8
Accept-Language: ko, en-US
Accept-Encoding: br, gzip, deflate
- 공통 헤더의 Content 시리즈와 대응
- 받기 원하는 데이터의 형식을 보내줌
- Authorization
Authorization: Bearer XXXXXXXXXXXXX
- 토큰을 서버로 보낼 때 사용하는 헤더
- Origin
- POST같은 요청을 보낼때 요청이 어느 주소에서 시작되었는지를 나타낸다
- CORS문제 나타 날수도
- Cookie
Cookie: 키=값; 키=값;
- 서버는 이 쿠키 헤더를 파싱해서 사용
- If-Modified-Since : 특정 날짜 이후에 변경됐을 때만
- 요청 바디(엔티티)
[응답]
- 메세지 구조
- 응답 라인
- 버전
- 상태 코드
- 상태 메세지 : HTTP/1.1 200 OK
- 응답 헤더
- Access-Control-Allow-Origin
Access-Control-Allow-Origin: www.tmon.com
- CORS 허용 헤더들
Access-Control-Allow-Origin: *
Access-Control-Request-Method, Access-Control-Request-Headers, Access-Control-Allow-Methods, Access-Control-Allow-Headers
- CORS 요청시 미리 OPTION 주소로 서버가 CORS를 허용하는지 물어본다
- Allow
Allow: GET
- 사용 불가능한 메서드 사용시 405 상태 띄우면서 클라이언트가 사용 가능한 메서드 보여준다
- Content-Disposition
Content-Disposition: inline
Content-Disposition: attachment; filename='filename.csv'
- 응답을 어떻게 표시할지 inline은 웹페이지에 나타내고 attachment는 다운로드
- Location
HTTP/1.1 302 Found Location: /
- 300 201 응답일때 어느 페이지로 이동할 지를 알려주는 헤더
- 리다이렉트
- Content-Security-Policy
Content-Security-Policy: default-src 'self'
Content-Security-Policy: default-src https:
Content-Security-Policy: default-src 'none'
- 응답시 많은 외부소스를 가지고 오는데 어떤 조건의 컨텐츠를 가져올지 정할 수 있다
- Set-Cookie
Set-Cookie: hello=babo; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly
Set-Cookie: 키=값; 옵션들
Expires
Max-Age
Secure
HttpOnly
Domain
Path
- 서버가 클라이언트에게 쿠키 설정하라고 명령
- 응답 바디 : HTML, JSON, Octet Stream 등이 있다.