GET
或 POST
방법을 사용하는 것의 차이점은 무엇인가요? 어느 것이 더 안전합니까? 각각의 장점과 단점은 무엇입니까?
(비슷한 질문)
P粉8845486192023-10-15 14:16:09
사용자가 양식에 정보를 입력하고 "제출"을 클릭하면 해당 정보는 URL 또는 HTTP 요청 본문의 두 가지 방법으로 브라우저에서 서버로 전송될 수 있습니다.
이전 예에서 사용된 GET 메서드는 이름/값 쌍을 URL에 추가합니다. 불행하게도 URL의 길이는 제한되어 있으므로 이 방법은 매우 적은 수의 매개변수에서만 작동합니다. 양식에서 많은 수의 매개변수를 사용하거나 매개변수에 많은 양의 데이터가 포함되어 있는 경우 URL이 잘릴 수 있습니다. 또한 URL에 전달된 매개변수는 브라우저의 주소 필드에 표시되는데, 이는 비밀번호를 표시하기에 가장 좋은 위치가 아닙니다.
GET 방식의 대안은 POST 방식입니다. 이 방법은 HTTP 요청 본문에 이름/값 쌍을 래핑하여 URL을 더욱 깔끔하게 만들고 양식 출력에 크기 제한을 두지 않습니다. 또한 더 안전합니다.
P粉0020233262023-10-15 12:54:06
이것은 보안 문제가 아닙니다. HTTP 프로토콜은 GET 유형 요청을 idempotent로 정의하는 반면 POST에는 부작용이 있을 수 있습니다. 일반 영어로 말하면 GET은 변경하지 않고 무언가를 보는 데 사용되고 POST는 무언가를 변경하는 데 사용된다는 의미입니다. 예를 들어, 검색 페이지는 GET을 사용해야 하고, 비밀번호 변경 양식은 POST를 사용해야 합니다.
또한 PHP는 이러한 개념을 약간 혼동한다는 점에 유의하세요. POST 요청은 쿼리 문자열과 요청 본문에서 입력을 받습니다. GET 요청은 단순히 쿼리 문자열에서 입력을 받습니다. 따라서 POST 요청은 GET 요청의 상위 집합입니다. POST 요청에서 다른 의미를 갖는 동일한 이름의 매개변수와 함께 $_GET
,甚至可以在 $_POST
和 $_GET
를 사용할 수 있습니다.
예를 들어 기사를 편집하기 위한 양식이 있다고 가정해 보겠습니다. 기사 ID는 쿼리 문자열에 있을 수 있습니다(따라서 전달됨 $_GET['id']
获得),但假设您想要更改文章 ID。然后,新的 ID 可能会出现在请求正文中 ($_POST['id']
). 좋습니다. 이것이 가장 좋은 예는 아닐 수도 있지만 차이점을 보여주기를 바랍니다.