99%의 사람들이 HTTP에서 GET과 POST의 차이점을 오해하고 있습니다.

WBOY
풀어 주다: 2016-10-10 11:41:03
원래의
924명이 탐색했습니다.

GET과 POST는 HTTP 요청의 두 가지 기본 방법입니다. WEB 개발을 경험해 본 사람이라면 누구나 이 둘의 차이점을 알 수 있습니다.

가장 직관적인 차이점은 GET은 URL에 매개변수를 포함하고 POST는 요청 본문을 통해 매개변수를 전달한다는 것입니다.

수많은 GET 및 POST 요청을 직접 작성했을 수도 있고, 두 가지의 차이점을 요약한 많은 권위 있는 웹사이트를 읽어보았을 수도 있습니다.

인터뷰에서 이런 질문을 받으면 마음이 자신감과 기쁨으로 가득 차요.

쉽게 '표준적인 답변'을 하셨습니다:

  • GET은 브라우저가 롤백될 때 무해하지만 POST는 요청을 다시 제출합니다.

  • GET으로 생성된 URL 주소는 북마크할 수 있지만 POST는 할 수 없습니다.

  • GET 요청은 브라우저에 의해 적극적으로 캐시되지만 POST는 수동으로 설정하지 않는 한 캐시되지 않습니다.

  • GET 요청은 URL 인코딩만 가능하지만 POST는 여러 인코딩 방법을 지원합니다.

  • GET 요청 매개변수는 브라우저 기록에 완전히 유지되지만 POST의 매개변수는 유지되지 않습니다.

  • GET 요청의 경우 URL로 전송되는 매개변수에는 길이 제한이 있지만 POST의 경우 길이 제한이 없습니다.

  • 매개변수의 데이터 유형과 관련하여 GET은 ASCII 문자만 허용하지만 POST는 제한이 없습니다.

  • GET은 매개변수가 URL에 직접 노출되므로 민감한 정보를 전달하는 데 사용할 수 없기 때문에 POST보다 보안성이 낮습니다.

  • GET 매개변수는 URL을 통해 전달되고 POST는 요청 본문에 배치됩니다.

(이 표준 답변은 w3schools에서 참조되었습니다.)

"안타깝게도 이는 우리가 원하는 답변이 아닙니다!"

사실대로 말씀해주세요. . .

GET과 POST 사이에 본질적으로 차이가 없다고 말하면 믿으시겠습니까?


GET, POST의 망토를 벗고 서로 솔직해지자!


GET과 POST가 무엇인가요? HTTP 프로토콜에서 요청을 보내는 두 가지 방법.

HTTP란 무엇인가요? HTTP는 World Wide Web에서 데이터가 통신되는 방식에 대한 TCP/IP 기반 프로토콜입니다.

HTTP의 최하위 계층은 TCP/IP입니다. 따라서 GET 및 POST의 맨 아래 계층도 TCP/IP입니다. 즉, GET/POST는 모두 TCP 링크입니다. GET과 POST는 동일한 작업을 수행할 수 있습니다. 기술적으로는 GET에 요청 본문을 추가하고 POST에 URL 매개변수를 추가해야 합니다.

그럼 '표준 답변'에는 어떤 차이점이 있나요?

World Wide Web 세계에서 TCP는 자동차와 같습니다. TCP를 사용하여 데이터를 전송하는 것은 매우 안정적이며 누락된 항목이 없습니다. 하지만 도로 위의 모든 자동차가 똑같이 보인다면 세상은 엉망이 될 것입니다. 긴급 메시지를 전달하는 자동차는 앞에 물건을 실은 자동차에 의해 막힐 수 있으며 전체 교통 시스템이 마비될 것입니다. 이런 일이 발생하지 않도록 트래픽 규칙 HTTP가 탄생했습니다. HTTP는 GET, POST, PUT, DELETE 등을 포함하여 자동차 운송에 대한 여러 서비스 범주를 설정했습니다. HTTP는 GET 요청을 실행할 때 자동차에 GET 라벨을 지정해야 하며(메서드를 GET으로 설정) Put을 요구하도록 규정하고 있습니다. 쉽게 기록할 수 있도록 자동차 지붕(URL)에 데이터를 전송했습니다. POST 요청인 경우 POST 라벨을 차량에 부착하고 상품을 캐리지에 실어야 합니다. 물론 GET 중에 일부 물건을 차 안에 몰래 숨길 수도 있지만 POST 중에 지붕에 일부 데이터를 넣을 수도 있어 사람들이 바보 같은 느낌을 받을 수도 있습니다. HTTP는 단지 행동 강령일 뿐이며 TCP는 GET 및 POST가 구현되는 방식의 기초입니다.

그러나 HTTP는 GET 및 POST 매개변수(URL 또는 요청 본문)의 전송 채널에 대한 요구 사항을 부과한다는 점만 알 수 있습니다. "표준 답변"의 매개변수 크기 제한은 어디에서 나오나요?



World Wide Web 세계에는 운송 회사라는 또 다른 중요한 역할이 있습니다. 서로 다른 브라우저(http 요청 시작)와 서버(http 요청 수락)는 서로 다른 운송 회사입니다. 이론적으로는 자동차 지붕에 상품을 무제한으로 쌓을 수 있지만 URL에는 무제한 매개변수를 추가할 수 있습니다. 그러나 운송 회사는 바보가 아닙니다. 적재 및 하역에는 위험을 제어하기 위해 단일 배송량을 제한합니다. 업계의 암묵적인 규칙은 (대부분의) 브라우저가 일반적으로 URL 길이를 2K 바이트로 제한하고 (대부분의) 서버가 최대 64K 크기의 URL을 처리할 수 있다는 것입니다. 초과분은 처리되지 않습니다. GET 서비스를 사용하고 요청 본문에 데이터를 비밀리에 숨기는 경우 서버에 따라 데이터를 언로드하고 읽는 데 도움이 되는 반면 일부 서버는 이를 직접 무시합니다. 받을 수 없음을 보장합니다.

좋아, 이제 GET과 POST가 본질적으로 TCP 링크라는 것을 알았으므로 차이가 없습니다. 다만, HTTP 규정 및 브라우저/서버 제한으로 인해 신청 절차에 다소 차이가 있습니다.

이 글이 이렇게 끝날 것 같나요?

우리의 빅보스가 아직 등장을 기다리고 있어요. . .

이 BOSS는 얼마나 신비한가요? 인터넷에서 "GET과 POST의 차이점"을 찾으려고 하면 표시되는 검색 결과에는 전혀 언급되지 않습니다. 그는 정확히 무엇입니까? . .

GET과 POST 사이에는 또 다른 중요한 차이점이 있습니다.

GET은 하나의 TCP 데이터 패킷을 생성하고 POST는 두 개의 TCP 데이터 패킷을 생성합니다.

장문의 말:

GET 요청의 경우 브라우저는 http 헤더와 데이터를 함께 보내고 서버는 200(반환 데이터)으로 응답합니다.

POST의 경우 브라우저가 헤더를 먼저 보내고 서버는 100 continue로 응답한 다음 브라우저는 데이터를 보내고 서버는 200 ok(반환 데이터)로 응답합니다.

즉, GET은 차량으로 한 번만 물건을 배달해야 하는 반면, POST는 두 번만 이동하면 됩니다. 첫 번째 이동에서는 서버에 가서 "야, 내가 한 묶음 배달할 거야"라고 인사하세요. 상품은 나중에."라고 말하며 문을 열어 인사한 뒤 돌아서 상품을 배달했다.

POST는 두 단계를 거쳐야 하고 시간도 조금 더 걸리기 때문에 POST보다 GET이 더 효율적인 것 같습니다. 따라서 Yahoo 팀은 웹 사이트 성능을 최적화하기 위해 POST를 GET으로 교체할 것을 권장합니다. 하지만 이건 함정이에요! 조심해서 들어가세요. 왜?

1. GET과 POST는 고유한 의미를 가지며 임의로 혼합할 수 없습니다.

2. 연구에 따르면 네트워크 환경이 좋으면 하나의 패키지를 보내는 시간과 두 개의 패키지를 보내는 시간의 차이는 기본적으로 무시할 수 있습니다. 네트워크 환경이 열악한 경우 두 개의 패킷을 사용하는 TCP는 데이터 패킷의 무결성을 검증하는 데 큰 이점을 갖습니다.

3. 모든 브라우저가 POST에서 패키지를 두 번 보내는 것은 아니며 Firefox는 한 번만 보냅니다.

자, 면접관이 "GET과 POST의 차이점"을 물었을 때, 여러분은 마음속으로 이런 생각을 하시나요?

(이 기사는 원본이므로 WeChat 공개 계정 WebTechGarden에서 가져온 것임을 명시해 주세요.)

(기사에 틀린 부분이 있으면 정정해주세요)

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿