1.OPTIONS 메서드
https://developer.mozilla.org/ko/docs/Web/HTTP/Reference/Methods/OPTIONS
OPTIONS - HTTP | MDN
OPTIONS /index.html HTTP/1.1 OPTIONS * HTTP/1.1 서버가 지원하는 요청 방법을 찾으려면 아래와 같이 curl 명령어을 사용하여 OPTIONS 요청을 보내볼 수 있습니다. curl -X OPTIONS https://example.org -i 그럼 응답은 허
developer.mozilla.org
OPTIONS: 서버가 지원하는 메서드 확인 (CORS Preflight에서 자주 사용)
클라이언트가 OPTIONS /some/url 요청을 보내면,
서버는 그 리소스에 대해 지원하는 메서드 목록을 Allow 헤더에 담아서 응답함
예시
OPTIONS /users/123 HTTP/1.1
Host: api.example.com
응답
HTTP/1.1 204 No Content
Allow: GET, POST, PUT, PATCH, DELETE, OPTIONS
GET, POST, PUT, PATCH, DELETE, OPTIONS 메서드가 허용된다는 뜻.
실제 활용으로 일반적으론 OPTIONS 메서드의 용도는
- 서버가 리소스별로 어떤 메서드를 지원하는지 확인할 때 사용.
- 보통 API 설계에서만 의미 있게 쓰이고, 일반 웹 브라우저 동작에는 거의 안 드러남.
HTTP는 보통 GET/POST만 쓰니까 OPTIONS 쓸 일이 거의 없었는데,
API에서는 메서드 종류가 많아져서 OPTIONS가 사용될때가 좀 더 많아졌다.
여제껏 배웠던 웹 보안 기초 에서는 GET,POST만 접근해왔으니
버그바운티를 실습하다 마주친 PATCH등을 보고 당황했었던 경험이 있음.
이는 요즘 실무에서 많이사용되는 API때문에 이와같은 메서드들을 접하게되는것.
+ CORS(교차 출처 리소스 공유)에서 쓰이는 “사전 요청(Preflight Request)”
브라우저는 보안상, 다른 출처(origin)의 서버에 요청을 보낼 때 위험할 수 있다고 봄
특히 요청이 단순하지 않고(GET, POST라도 특정 헤더나 Content-Type: application/json 같은 게 붙으면) 서버가 허용한 건지 확인해야 함.
그래서 브라우저가 **진짜 요청(예: POST)**을 보내기 전에 먼저 OPTIONS 요청을 보내서 물어본다:
“나 POST 메서드를 쓸 건데, X-PINGOTHER, Content-Type 같은 헤더도 같이 보낼 거야. 이거 해도 돼?”
OPTIONS /resources/post-here/ HTTP/1.1
Host: bar.example
Origin: https://foo.example
Access-Control-Request-Method: POST
Access-Control-Request-Headers: X-PINGOTHER, Content-Type
.
이 응답에 200OK 가 떨어진다면 그제서야 POST요청이 실제로 가게됨.
OPTIONS의 메서드는 이 두개의 상황에서 쓰이는것.
2. HEAD 메서드
https://developer.mozilla.org/ko/docs/Web/HTTP/Reference/Methods/HEAD
HEAD - HTTP | MDN
developer.mozilla.org
HEAD는 GET과 거의 똑같지만, 응답 본문(body)을 빼고 헤더(header)만 돌려받는 요청이다.
"문서 내용을 달라”는 게 아니라, “이 문서의 정보(헤더)만 달라"
리소스가 있는지/없는지, 크기·형식 같은 메타데이터를 확인할 때 유용
본문을 다 받지 않고도 Content-Length, Content-Type, Last-Modified 같은 정보를 알 수 있어
다운로드하려는 파일의 크기를 먼저 알수있음.
쉽게 요약하면 GET으로 요청할 문서의 "정보" 를 가져오는것. (문서의 내용이아님!!)
3. PUT 메서드와 PATCH 메서드
- PUT이 리소스를 전체 교체하는 거라면,
- PATCH는 리소스의 일부만 수정하는 메서드임.
REST API에서 자주 사용
- 사용자 프로필 일부 수정, 설정값 일부 업데이트 같은 경우.
예시
PUT으로 사용자의 프로필을 업데이트하는 경우
PUT /users/123 HTTP/1.1
Content-Type: application/json
{
"name": "철수",
"email": "abc@example.com",
"phone": "010-1234-5678"
}
PATCH로 사용자의 프로필중 원하는 필드만 업데이트하는 경우
PATCH /users/123 HTTP/1.1
Content-Type: application/json
{
"phone": "010-9999-0000"
}
'과제' 카테고리의 다른 글
| HTTP의 개요 (0) | 2025.09.22 |
|---|---|
| 추가 공부 계획 (0) | 2025.09.21 |
| 그누보드 대상 주요정보통신기반 웹 취약점 항목 진단 (5) | 2024.12.07 |
| ffuf 설치 및 사용 (0) | 2024.11.15 |
| 정보보안기사 준비 (필기 2022 버전) (0) | 2024.11.09 |