반응형
GET (리소스 획득)
요청
GET /index.html HTTP /1.1
Host: www.hackr.jp
if-Modified-Since: Thu. 12 Jul 2012 07:30:0 GMT
응답
index.html 리소가 2012년 7월 12일 7시 30분 이후에 갱신된 경우에만
돌려주고 이전이라면 상태코드 304 Not Modified 리스폰스만 되돌려주면 된다.
POST (엔티티 전송)
- GET으로도 엔티티 전송이 가능하지만, 자주 사용하지 않고 일반적으로 POST를 사용한다.
- Response에 의한 Entity를 획득하는 것만이 목적은 아니다.
400번대 상태코드 잘 던저주기
PUT (파일 전송)
- 보통 파일을 전송하기 위해서 사용된다.
- HTTP/1.1 PUT 자체에는 인증 기능이 없어 누구든지 파일을 업로드 가능하다.
- 보안 상의 문제도 있어서 일반적인 웹 사이트에서는 사용되지 않는다.
- REST와 같이 웹끼리 연계하는 설계 양식을 사용할 때 이용하는 경우 있음
요청
PUT/ /example.html HTTP/1.1
Host: www.hackr.jp
Content-type: text/htmp
Content-Length: 1560 (1560 바이트 데이터)
응답
204 No Content Response 보내기 (example.html은 서버상에서 작성되어 있다.)
204 No Content 여기를 참고하자.
HEAD (메시지 헤더 취득)
- HEAD 메소드는 GET과 같은 기능이지만 바디를 돌려주지 않는다.
- URI 유효성과 리소스 갱신 시간을 확인하는 목적 등으로 사용
요청
HEAD /index.html HTTP/1.1
HOST: www.hackr.jp
응답
index.html에 관련된 리스폰스 헤더를 되돌려줌
DELETE (파일 삭제)
- PUT 메소드와는 반대로 동작 request URI로 지덩된 리소스의 삭제를 요구
- HTTP 1.1의 DELETE 자체에는 PUT과 동일하게 인증 기능 없어 보안 취약
REST(Representational State Transfer) 사용할 때만 사용
요청
DELETE /example.html HTTP/1.1
HOST: www.hackr.jp
응답
204 No Content Response 보내기 (example.html은 서버상에서 삭제)
OPTIONS (제공하고 있는 메소드의 문의)
- Request URI로 지정한 리소스가 제공하고 있는 메소드를 조사하기 위해 사용
요청
OPTIONST* HTTP/1.1
HOST: www.hackr.jp
응답
HTTP/1.1 200 OK
Allow: GET, POST, HEAD, OPTIONS
(서버가 제공하고 있는 메소드를 되돌려준다.)
TRACE (경로 조사)
- Web 서버에 접속해서 자신에게 통신을 되돌려 받는 루프백(loop-back)을 발생
- Request 보낼 때 "Max-Forwards" 라는 헤더 필드에 수치를 포함시켜 서버를
통과할 때마다 그 수치를 줄여간다.- 수치가 0이 된 곳을 끝으로, Request를 마지막으로 수신한 곳에서 상태코드 200 OK response 되돌려준다.
- 클라이언트는 TRACE 메소드를 사용해 Request를 보낸 곳에 어떤 Request가 가공되어 있는지 조사할 수 있다.
- 프록시 등을 중계하여 오리진(origin) 서버에 접속할 때 그 동작을 확인하기 위해 사용 (프록시 서버등을 경유할 때 Request가 가공될 수 있다.)
하지만 TRACE 메서드는 거의 사용되지 않으며 HttpOnly 등으로 보호된 세션쿠키를 탈취하는데 사용할 수 있는 크로스 사이트 트레이싱(XST)과 같은 공격을 일으키는 보안 상의 문제도 있기 때문에 보통 사용되고 있지 않는다.
크로스 사이트 트레이싱(XST)
요청
TRACE / HTTP/1.1
HOST: www.hackr.jp
Max-Forwards: 2
응답
HTTP /1.1 200 OK
Content-Type: message/http
Content-Length: 1024
TRACE / HTTP /1.1
Host: hackr.jp
Max-Forwads:2 (리퀘스트 내용을 리스폰스에 포함해서 되돌려준다.)
CONNECT (프록시에 터널링 요구)
- 프록시에 터널 접속 확립을 요함으로써, TCP 통신을 터널링 시키기 위해서 사용
- 주로 SSL이랑 TLS 등의 프로토콜로 암호화된 것을 터널링 시키기 위해서 사용
CONNECT 프록시 서버: 포트 HTTP 버전
요청
CONNECT proxy.hackr.jp:8080 HTTP /1.1
Host: proxy.hackr.jp
응답
HTTP /1.1 200 OK (그 뒤에 터널링을 개시)
메소드는 대문자와 소문자를 구별하기 때문에 대문자로 기재하자
LINK,UNLINK HTTP /1.1에서 폐지되어 제공안함
Reference
그림으로 배우는 HTTP & Network Basic:재미있게 배워보는 웹과 네트워크 입문
반응형
'Web' 카테고리의 다른 글
OAuth2(Open Authorization) (0) | 2023.04.08 |
---|---|
Redis(Remote Dictionary Server) (0) | 2023.03.30 |
JWT(Json Web Token) (0) | 2023.03.23 |
상태 코드(2) (0) | 2022.12.29 |
상태 코드(1) (0) | 2022.12.29 |