当前位置:网站首页>Overturn your cognition? The nature of get and post requests

Overturn your cognition? The nature of get and post requests

2022-07-06 04:09:00 ZNineSun

GET and POST yes HTTP Two basic methods of requesting , The difference between them , Maybe what we blurted out was :GET Include the parameter in URL in ,POST adopt request body Pass parameters .

Compare the official standard answer Like these :

  • 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 .

Of course, it's good to answer these questions during the interview , In this article, do you think we just want to give you an interview answer ???no no no

If I told you GET and POST Is there no difference in essence between you and me ?

First of all, we need to understand 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 problem is coming. , What are the standard answers above ?

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 Just a Code of conduct , and TCP It's just GET and POST How to achieve the basic .

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 ?

 Insert picture description here

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 .

GET and POST There is another important difference , To put it simply :

GET Produce a TCP Data packets ;POST Produce two TCP Data packets

  • 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 .

So now look back at the standard answer above , Is there a deeper understanding !!!

原网站

版权声明
本文为[ZNineSun]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060404342818.html