HTML 요청 메서드

HTTP이란 무엇인가요?

하이텍스트 전송 프로토콜(Hypertext Transfer Protocol, 줄여서 HTTP)은 클라이언트와 서버 간의 통신을 가능하게 하기 위해 목표로 합니다.

HTTP은 클라이언트와 서버 간의 요청-응답 프로토콜로서 작동합니다.

예시: 클라이언트(브라우저)가 서버에 HTTP 요청을 보냅니다. 그런 다음 서버가 응답을 클라이언트에게 반환합니다. 응답은 요청 상태 정보를 포함하고, 요청한 내용도 포함할 수 있습니다.

HTTP 메서드

  • GET
  • POST
  • PUT
  • HEAD
  • DELETE
  • PATCH
  • OPTIONS

가장 일반적으로 사용되는 두 가지 메서드는 GET과 POST입니다。

GET 메서드

GET은 지정된 자원에서 데이터를 요청하는 데 사용됩니다。

GET은 가장 일반적인 HTTP 메서드 중 하나입니다.

주의하세요, 쿼리 문자열(이름/값 쌍)은 GET 요청의 URL에서 전송됩니다:

/test/demo_form.php?name1=value1&name2=value2

GET 요청에 대한 다른 몇 가지 주의사항:

  • GET 요청은 캐시될 수 있습니다
  • GET 요청은 브라우저의 이력 기록에 저장됩니다
  • GET 요청은 북마크로 저장할 수 있습니다
  • 감쪽 데이터를 처리할 때는 GET 요청을 사용하지 않아야 합니다
  • GET 요청은 길이 제한이 있습니다
  • GET 요청은 데이터를 가져오기(수정하지 않음)에만 사용되어야 합니다

POST 메서드

POST은 데이터를 서버로 보내서 자원을 생성/갱신하는 데 사용됩니다.

POST로 서버로 보내는 데이터는 HTTP 요청의 본문에 저장됩니다:

POST /test/demo_form.php HTTP/1.1
Host: codew3c.com
name1=value1&name2=value2

POST는 가장 일반적인 HTTP 메서드 중 하나입니다.

POST 요청에 대한 다른 몇 가지 주의사항:

  • POST 요청은 캐시되지 않습니다
  • POST 요청은 브라우저의 이력 기록에 저장되지 않습니다
  • POST는 북마크로 저장할 수 없습니다
  • POST 요청은 데이터 길이에 대한 제한이 없습니다

PUT 메서드

PUT은 데이터를 서버로 보내서 자원을 생성/갱신하는 데 사용됩니다.

POST와 PUT 간의 차이는 PUT 요청이 동일성 있음(idempotent)이므로, 동일한 PUT 요청을 여러 번 호출하면 항상 동일한 결과를 얻습니다. 반대로, POST 요청을 여러 번 호출하면 동일한 자원을 여러 번 생성하는 부작용이 있습니다.

HEAD 메서드

HEAD과 GET은 거의 같지만, 응답 본문이 없습니다.

다시 말해, GET /users가 사용자 목록을 반환하면 HEAD /users는 동일한 요청을 발행하지만 사용자 목록을 반환하지 않습니다.

HEAD 요청은 실제 GET 요청을 발행하기 전에(예: 대형 파일 다운로드나 응답 본문 전에) GET 요청이 반환할 내용을 확인하는 데 매우 유용합니다.

DELETE 메서드

DELETE 메서드는 지정된 자원을 제거합니다.

OPTIONS 메서드

OPTIONS 메서드는 목표 자원의 통신 옵션을 설명합니다.

GET과 POST를 비교합니다

아래 표는 두 가지 HTTP 메서드: GET과 POST를 비교합니다.

  GET POST
뒤로 가기 버튼/새로 고침 위험 없음 데이터가 다시 제출됩니다(브라우저는 사용자에게 데이터가 다시 제출될 것을 알려야 합니다).
북마크 북마크로 저장할 수 있습니다 북마크로 저장할 수 없습니다
캐시 캐시될 수 있습니다 캐시할 수 없습니다.
인코딩 유형 application/x-www-form-urlencoded application/x-www-form-urlencoded 또는 multipart/form-data. 이진 데이터는 복잡한 인코딩을 사용합니다.
역사 파라미터는 브라우저의 역사에 저장됩니다. 파라미터는 브라우저의 역사에 저장되지 않습니다.
데이터 길이 제한 네. 데이터를 전송할 때 GET 메서드는 URL에 데이터를 추가합니다. URL의 길이는 제한됩니다. (URL 최대 길이는 2048 문자입니다). 제한이 없습니다.
데이터 유형 제한 ASCII 문자만 허용됩니다. 제한이 없습니다. 이진 데이터도 허용됩니다.
보안성

POST에 비해 GET의 보안성이 낮습니다. 왜냐하면 전송된 데이터가 URL의 일부로 저장됩니다.

암호나 다른 민감한 정보를 전송할 때 GET을 사용하지 마세요!

POST는 GET보다 안전합니다. 왜냐하면 파라미터가 브라우저의 역사나 웹 서버의 로그에 저장되지 않기 때문입니다.
보이지 않음 데이터는 URL에 모든 사람에게 공개됩니다. 데이터는 URL에 표시되지 않습니다.