«   2018/05   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
Tags
more
Archives
Today
0
Total
1,148
관리 메뉴

피아노 치는 개발자

[HTTP METHOD] OPTIONS 본문

개발/일반

[HTTP METHOD] OPTIONS

Claude.Seo 2017.03.07 14:47

웹 개발을 하다보면 GET, POST외에 더 많은 HTTP Method가 있는 사실을 알게된다. (더 상세한 내용은 RCE2068 (HTTP 1.1)를 참고)

다양한 HTTP Method들 중 OPTIONS에 알아보도록 하자.



OPTIONS?

curl -X OPTIONS http://apache.org/ -v

< HTTP/1.1 200 OK
< Date: Tue, 07 Mar 2017 05:27:31 GMT
< Server: Apache/2.4.7 (Ubuntu)
< Allow: POST,OPTIONS,GET,HEAD
< Cache-Control: max-age=3600
< Expires: Tue, 07 Mar 2017 06:27:31 GMT
< Content-Length: 0
< Content-Type: text/html

OPTIONS을 통해 요청을 하게 되면, 이 URI에서 사용할 수 있는 메소드들(GET, POST, PUT, DELETE, OPTIONS ...) 들이 헤더를 통해 알려준다.

실제로 OPTIONS로 호출하게 되면 실제 서버 로직이 수행되지 않고도 선택 사항, 필요 조건 및 처리 능력 등을 알 수 있게 된다.

웹 개발도중 HTTP CORS와 관련한 이슈가 자주 발생하는데, 항상 같이 나타나는것이 바로 이 OPTIONS 메소드 이다.



내용

여러군데의 홈페이지에 OPTIONS 메소드로 요청해보면 제대로 응답오는 경우보다, 500 Internal Server Error, 405 Method Not Allowed, 501 Not Implemented, 혹은 GET과 같은 내용이 반환되는 경우가 더 많다.

위의 반환값들은 잘못된 것들이고, OPTIONS 메소드로 호출하면 최소한 HTTP 응답 코드와 200 OK 와 헤더에 HTTP 사용 가능한 Method 정보를 담은 Allow 를 반환해줘야한다.

> OPTIONS /api/v1/users

< 200 OK
< Allow: GET,POST,PUT,DELETE,OPTIONS



참고

RFC 2048 (en) : https://www.ietf.org/rfc/rfc2068.txt

RFC 2048 (kr) : http://iorora.web-bi.net/tech/ETCnetwork/rfc/rfc2068-kr.html

'개발 > 일반' 카테고리의 다른 글

파우스트링팀 결성  (0) 2017.03.25
[HTTP METHOD] OPTIONS  (0) 2017.03.07
node.js를 heroku에 배포하기  (0) 2017.02.21
버전 관리, 어떻게 해야할까?  (0) 2017.02.17
프로세스와 쓰레드의 차이  (0) 2017.02.02
[python] 라이브러리 만들어서 pypi에 배포하기  (0) 2017.01.02
0 Comments
댓글쓰기 폼