LuckyWinty / fe-weekly-questions

A pro to record some interview questions every week...
MIT License
342 stars 34 forks source link

GET和POST的区别 #67

Open LuckyWinty opened 4 years ago

LuckyWinty commented 4 years ago

区别一

GET重点从服务器上获取资源,POST重点向服务器发送数据.

区别二

get传输数据是通过URL请求,置于URL后,并用”?”连接,多个请求数据间用”&”连接.post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的;

区别三

Get传输的数据量小,因为受URL长度限制,但效率较高;

Post可以传输大量数据,所以上传文件时只能用Post方式;

区别四

get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;

post较get安全性较高;

区别五

get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。

post支持标准字符集,可以正确传递中文字符。

zhiqiang77 commented 4 years ago

good 吧

blazer233 commented 4 years ago
1、从缓存的角度,GET 请求会被浏览器主动缓存下来,留下历史记录,而 POST 默认不会。
2、从编码的角度,GET 只能进行 URL 编码,只能接收 ASCII 字符(encodeURI()编码),而 POST 没有限制。
3、从参数的角度,GET 一般放在 URL 中,因此不安全,POST 放在请求体中,更适合传输敏感信息。
4、从TCP的角度,GET 请求会把请求报文一次性发出去,而 POST 会分为两个 TCP 数据包,
   首先发 header 部分,如果服务器响应 100(continue), 然后发 body 部分。
JaykeyGuo commented 4 years ago
1、从缓存的角度,GET 请求会被浏览器主动缓存下来,留下历史记录,而 POST 默认不会。
2、从编码的角度,GET 只能进行 URL 编码,只能接收 ASCII 字符(encodeURI()编码),而 POST 没有限制。
3、从参数的角度,GET 一般放在 URL 中,因此不安全,POST 放在请求体中,更适合传输敏感信息。
4、从TCP的角度,GET 请求会把请求报文一次性发出去,而 POST 会分为两个 TCP 数据包,
   首先发 header 部分,如果服务器响应 100(continue), 然后发 body 部分。

第四点就很酷

haishengXie0712 commented 4 years ago
1、从缓存的角度,GET 请求会被浏览器主动缓存下来,留下历史记录,而 POST 默认不会。
2、从编码的角度,GET 只能进行 URL 编码,只能接收 ASCII 字符(encodeURI()编码),而 POST 没有限制。
3、从参数的角度,GET 一般放在 URL 中,因此不安全,POST 放在请求体中,更适合传输敏感信息。
4、从TCP的角度,GET 请求会把请求报文一次性发出去,而 POST 会分为两个 TCP 数据包,
   首先发 header 部分,如果服务器响应 100(continue), 然后发 body 部分。

@blazer233 第四点是不是要看具体的场景呢? 我是用谷歌浏览器发送请求,使用 wireshark 抓包也是只发送一个 TCP.

zhiqiang77 commented 4 years ago

辛苦了,还专门给我发邮件。谢谢了

------------------ 原始邮件 ------------------ 发件人: "LuckyWinty/fe-weekly-questions" <notifications@github.com>; 发送时间: 2020年8月31日(星期一) 中午11:18 收件人: "LuckyWinty/fe-weekly-questions"<fe-weekly-questions@noreply.github.com>; 抄送: "1527728131"<1527728131@qq.com>;"Comment"<comment@noreply.github.com>; 主题: Re: [LuckyWinty/fe-weekly-questions] GET和POST的区别 (#67)

1、从缓存的角度,GET 请求会被浏览器主动缓存下来,留下历史记录,而 POST 默认不会。 2、从编码的角度,GET 只能进行 URL 编码,只能接收 ASCII 字符(encodeURI()编码),而 POST 没有限制。 3、从参数的角度,GET 一般放在 URL 中,因此不安全,POST 放在请求体中,更适合传输敏感信息。 4、从TCP的角度,GET 请求会把请求报文一次性发出去,而 POST 会分为两个 TCP 数据包, 首先发 header 部分,如果服务器响应 100(continue), 然后发 body 部分。
@blazer233 第四点是不是要看具体的场景呢? 我是用谷歌浏览器发送请求,使用 wireshark 抓包也是只发送一个 TCP.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

NijatInHIT commented 3 years ago

哪里说 请求会被浏览器主动缓存下来 GET requests can be cached GET requests remain in the browser history GET requests can be bookmarked GET requests should never be used when dealing with sensitive data GET requests have length restrictions GET requests are only used to request data (not modify) 谁帮我把 主动cache翻译出来

zustyejunjie commented 3 years ago

你们说get不安全是因为参数在url后面,post在请求体里面,但是F12一下不是也都能看到吗

wangdaoo commented 3 years ago
1、从缓存的角度,GET 请求会被浏览器主动缓存下来,留下历史记录,而 POST 默认不会。
2、从编码的角度,GET 只能进行 URL 编码,只能接收 ASCII 字符(encodeURI()编码),而 POST 没有限制。
3、从参数的角度,GET 一般放在 URL 中,因此不安全,POST 放在请求体中,更适合传输敏感信息。
4、从TCP的角度,GET 请求会把请求报文一次性发出去,而 POST 会分为两个 TCP 数据包,
   首先发 header 部分,如果服务器响应 100(continue), 然后发 body 部分。

@blazer233 第四点是不是要看具体的场景呢? 我是用谷歌浏览器发送请求,使用 wireshark 抓包也是只发送一个 TCP.

这个具体场景怎么说呢?