Understanding the Key Differences Between HTTP GET and POST Requests
GET and POST are two of the eight HTTP request methods; this article explains their request‑line, header and body structures, compares their characteristics such as safety, idempotence, caching, length limits and TCP packet usage, and clarifies why HTTP distinguishes them despite sharing the same underlying protocol.
Overview
GET and POST are two of the eight HTTP request methods. They are defined by the HTTP protocol, which runs on top of TCP/IP.
HTTP Request Message Structure
An HTTP request consists of three parts:
Request line : method, URL, and HTTP version (e.g., GET /path HTTP/1.1).
Request headers : zero or more header fields, each in the form Header-Name: value, terminated by CRLF.
Request body : optional data sent after an empty line; used by methods such as POST.
GET Request Example
The following request was captured when accessing https://api.github.com/search/users?q=JakeWharton:
GET /search/users?q=JakeWharton HTTP/1.1
Host: api.github.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: _octo=GH1.1.1623908978.1549006668; _ga=GA1.2.548087391.1549006688; logged_in=yes; dotcom_user=GoMarck; _gid=GA1.2.17634150.1554639136; _gat=1The request line shows the method GET, the URL with query parameters, and HTTP/1.1. All subsequent lines are headers; there is no request body.
Characteristics of GET
Data is placed in the URL after a ? and parameters are joined with &.
According to the HTTP specification, GET is used for information retrieval and should be safe and idempotent.
GET responses can be cached by browsers; identical subsequent requests may be served from cache.
The URL length is limited by browsers and servers, not by the HTTP specification itself.
GET typically generates a single TCP packet that carries both headers and (non‑existent) body.
POST Request Example
POST / HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
Connection: Keep-Alive
name=Professional%20Ajax&publisher=WileyHere the request line uses the method POST. The request body follows a blank line and contains the form data name=Professional%20Ajax&publisher=Wiley.
Characteristics of POST
POST is intended for operations that may modify server resources (e.g., submitting a like on Zhihu).
Because it can change server state, POST is neither safe nor idempotent.
Request data resides in the body, so POST does not inherit the URL length limits of GET.
POST typically involves two TCP packets: one for headers, then after a 100 Continue response, a second packet for the body.
Why HTTP Distinguishes GET and POST
Even though both methods ultimately use TCP, the HTTP protocol assigns distinct semantics to aid management and routing. GET is defined for pure retrieval, while POST is defined for actions that may modify resources. This separation allows servers, proxies, and browsers to apply different handling rules, such as caching policies and safety checks.
Conclusion
At the transport layer, GET and POST are both TCP connections, but HTTP gives them separate categories to express intent, enforce safety and idempotence rules, and control how request data is transmitted. Understanding these differences helps developers choose the appropriate method for a given operation.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Linux Tech Enthusiast
Focused on sharing practical Linux technology content, covering Linux fundamentals, applications, tools, as well as databases, operating systems, network security, and other technical knowledge.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
