GET and POST yes HTTP Two basic methods of requesting , The difference between them , Come into contact with WEB Developers can say one or two .
The most intuitive difference is GET Include the parameter in URL in ,POST adopt request body Pass parameters .
You may have written countless GET and POST request , Or have seen many authoritative websites summarize their differences , You know exactly when and what to use .
When you are asked this question in an interview , Your heart is full of confidence and joy .
You give me a “ The standard answer ”：
GET It is harmless when the browser is backout , and POST The request will be submitted again .
GET Produced URL The address can be Bookmark, and POST Can not be .
GET The request will be initiated by the browser cache, and POST Can't , Unless manually set .
GET Request can only proceed url code , and POST Supports a variety of coding methods .
GET The request parameters are fully preserved in the browser history , and POST The parameters in are not retained .
GET Request in URL There is a length limit on the parameters passed in , and POST It has a .
The data type for the parameter ,GET We only accept ASCII character , and POST There is no limit to .
GET Than POST It's not safe , Because the parameters are directly exposed to URL On , So it can't be used to convey sensitive information .
GET Parameters through URL Pass on ,POST Put it in Request body in .
（ The answers to this standard are from w3schools）
“ unfortunately , This is not the answer we want ！”
Please tell me the truth ...
If I told you GET and POST Is there no difference in essence between you and me ？
Let's peel off GET and POST The appearance of , Let's be honest ！
GET and POST What is it? ？HTTP Two ways to send requests in the protocol .
HTTP What is it? ？HTTP Is based on TCP/IP Protocol for how data is communicated on the world wide web .
HTTP The bottom is TCP/IP. therefore GET and POST The bottom layer is also TCP/IP, in other words ,GET/POST All are TCP link .GET and POST You can do the same thing . Do you want to GET add request body, to POST close url Parameters , Technically, it works perfectly .
that ,“ The standard answer ” What are the differences in ？
In my world of the World Wide Web ,TCP It's like a car , We use it TCP To transport data , It is very reliable , It never happens that fewer pieces are lost . But if we run as like as two peas, we'll run the same cars. , So the world looks like a mess , An urgent car may be blocked by a car full of goods ahead , The whole transportation system will be paralyzed . To avoid that , traffic rules HTTP The birth of .HTTP There are several service categories for car transportation , Yes GET, POST, PUT, DELETE wait ,HTTP Regulations , When executed GET On request , To put a sticker on the car GET The label of （ Set up method by GET）, And we need to put the transmitted data on the roof （url in ） To facilitate recording . If it is POST request , It's going to be pasted on the car POST The label of , And put the goods in the carriage . Of course , You can also be in GET Sneak some goods into the car , But it was disgraceful ; It can also be in POST Put some data on the roof of the car , It feels silly .HTTP It's just a code of conduct , and TCP It's just GET and POST How to achieve the basic .
however , We only see HTTP Yes GET and POST Parameter transmission channel （url still requrest body） Put forward a request .“ The standard answer ” Where does the parameter size limit come from ？
In my world of the World Wide Web , There is another important role ： Transportation company . Different browsers （ launch http request ） And the server （ Accept http request ） Just different shipping companies . Although theoretically , You can pile unlimited loads on the roof （url And an infinite number of arguments ）. But transportation companies are not stupid , Loading and unloading are also very costly , They will limit the number of shipments to limit the risk , Too much data is a burden on both the browser and the server . The unwritten rule in the industry is ,（ majority ） Browsers often restrict url The length is in 2K Bytes , and （ majority ） Maximum server processing 64K The size of url. More than , We will not deal with it . If you use GET service , stay request body Hiding the data , Different servers do different things , Some servers will unload for you , Read the data , Some servers just ignore it , therefore , although GET You can take request body, There is no guarantee that it will be received .
Okay , Now you know ,GET and POST It's essentially TCP link , There is no difference . But because of HTTP The rules and browsers / Server limitations , As a result, they show some differences in the application process .
You think this is the end of the article ？
Our big BOSS Still waiting to show up ...
the BOSS How mysterious ？ When you try to find “GET and POST The difference between ” When , In the search results you'll see , Never mentioned him . What on earth is he ...
GET and POST There is another important difference , To put it simply ：
GET Produce a TCP Data packets ;POST Produce two TCP Data packets .
Long talk ：
about GET Method request , The browser will http header and data Send along , Server response 200（ Return the data ）;
And for POST, Browser sends first header, Server response 100 continue, The browser sends data, Server response 200 ok（ Return the data ）.
in other words ,GET It only takes a car trip to get the goods to , and POST Have to run two , The first trip , Go and say hello to the server first “ hi , I have to deliver a shipment later , You open the door to meet me ”, Then go back and deliver the goods .
because POST Two steps are needed. , It takes a little more time , look GET Than POST More effective . therefore Yahoo The team has recommended GET Replace POST To optimize website performance . But this is a pit ！ Jump in with caution . Why? ？
1. GET And POST Each has its own semantics , You can't mix them .
2. According to research , In a good network environment , The difference between the time to send a packet and the time to send two packets is negligible . And in the case of bad network environment , The two packages TCP On verifying packet integrity , It has great advantages .
3. Not all browsers will be there POST Send two packets in ,Firefox Just send it once .
Now? , When the interviewer asks you “GET And POST The difference between ” When , Is that the way you are inside ？
Source of the article ：http://t.cn/RjLq41J
Welcome to my WeChat official account. , Every day in the morning 9:00 Push articles on time .
After scanning the code , reply “ resources ” perhaps “ framework ” You can get massive high-quality video resources .