面试中经常会有“看起来”很简单的问题,rt 就是其一,再比如“从地址栏输入 url 到页面展示经历了什么”。 这类的问题,要说,都能列举一二,但不知道作为面试官的您最想听到的是哪方面的答案??
dalao 能分享一下吗?
1
doublleft 2017-09-13 11:44:12 +08:00
我一般会从语义化开始讲,列举几个为什么用 POST/GET 的场景,延伸到区别,再回归到本质都一样
|
2
doublleft 2017-09-13 11:45:00 +08:00
再扯扯跨域,OPTIONS 请求,资源引用和 xhr 请求区别,聊聊 JSONP ……
|
3
Moker 2017-09-13 11:45:27 +08:00
这两个请求的具体请求参数存放在哪里?有长度限制么?如果有,分别是多少?
楼下接着补充 |
4
Ryans 2017-09-13 11:47:06 +08:00
页面资源幂等性
GET 参数在 URL 传递会暴露 什么场合不建议 GET 我乱说的 |
5
falcon05 2017-09-13 11:50:24 +08:00 via iPhone
正确 /不正确使用的场景和 why?
|
6
SuperMild 2017-09-13 11:58:12 +08:00
然而面试官又各不一样,有的人可能喜欢听最基本的解释,确认你理解没有错误,而有的人可能喜欢听新奇的答案,看你能不能玩出新花样。
|
7
oott123 2017-09-13 12:07:11 +08:00 via Android
有个十分扯淡,但很多面试官喜欢听的答案:「 POST 比 GET 更安全」么
|
8
tomczhen 2017-09-13 12:12:46 +08:00 via Android
对于服务端和中间人来说没有区别,所谓的 URL 在地址栏这是客户端自己的实现,跟 HTTP 协议无关。
URL 长度 HTTP 协议中也没有规定,但是受客户端和服务端实现影响,不同的应用可能限制不同,或者可以配置范围不同。 |
10
DCjanus 2017-09-13 13:33:20 +08:00
在中国的网络环境下,部分运营商会缓存 GET 请求,所以如果你不是用 HTTPS,那么用 POST 则好得多
虽然某运营商也缓存过 POST |
11
a87150 2017-09-13 13:39:08 +08:00
这种基础问题最考验水平
|
13
qooweds 2017-09-13 18:39:48 +08:00
那么最正确的答案到底是什么?我也搜过类似问题,已经被搞蒙了
|
14
codermagefox 2017-09-13 19:12:37 +08:00
萌新表示看了楼上的回复最喜欢 4L 的回答,mark 一下
|
15
wangdu2012 2017-09-13 19:21:52 +08:00 via iPhone
招前端这么问?
|
16
isCyan 2017-09-13 19:23:28 +08:00 via Android
本质区别:一个在 uri 里一个在 body 里
|
18
misaka20038numbe 2017-09-13 19:37:11 +08:00 1
GET 发送请求,POST 发送数据
|
20
akira 2017-09-13 19:42:46 +08:00 1
最最本质的区别
一个请求方法是"GET" 一个请求方法是"POST" |
21
songdezu 2017-09-13 19:45:44 +08:00 via iPhone
安全性没区别吧,post 不能缓存
|
22
hxsf 2017-09-13 21:27:27 +08:00
GET 方法 语义上来说指获取由 URI 标识的任何信息。是幂等的(重要)
1. 如果请求消息包含 IfModified-Since、If-Unmodified-Since、If-Match、If-None-Match 或 If-Range header 字段则 GET 方法的语义将变为 “条件 GET ”。一个条件 GET 方法请求满足描述的情况下 的资源。(通过允许缓存被刷新而不需要多个请求或传输客户端已经有的数据,来减少不必要的网络使用) 2. 如果请求消息包含 Range 头,则 GET 方法的语义将变为“部分 GET ”。 部分 GET 请求仅传输实体的一部分,(还是为了减少不必要的网络使用) POST 方法 语义上来说是指新增或修改(取决于你的服务器代码)不一定是幂等的(重要) 1. 除非注明了 Cache-Control 或者 Expires,否则不应该被缓存。 2. message-body 不会被忽略, ( GET 也可以加 message-body,不过会被忽略掉(当然,你可以自己写个不遵循 rfc 的 server,但是连路中间的缓存或者代理啥的,嘿嘿)) |
23
hxsf 2017-09-13 21:30:56 +08:00
@songdezu #21 前半句见 v 友帖子 “被谷歌爬虫删了所有博客”,
后半句,参考 rfc 的缓存规则,post 请求的响应如果注明了 Cache-Control 之类的,是有用的。 当然,中间的 Cache、Proxy 的实现有没有遵循 rfc 就是另外一回事了。。。 |
24
lzjamao 2017-09-13 21:36:23 +08:00
* 协议格式的区别
* 服务器响应的区别 |
25
weakish 2017-09-13 22:05:38 +08:00
语义上说幂等性。
不过这只是一个约定。实际上,如果服务器乱来,GET 完全可以不幂等。 实际的区别可能是用 GET 发送数据的话, 由于浏览器和服务器通常对 url 长度有限制, 因此 GET 发送的数据量上限比 POST 要低很多。 但实际上 HTTP 协议并没有指定 url 长度,所以完全可以开发支持「无限」长度的 url 的 http 客户端和服务器。 |
26
msg7086 2017-09-14 00:09:37 +08:00
GET 和 POST 本质区别还是 HTTP VERB 不同。
Post 的时候也可以在 URL 上带参数。 Post 的时候也可以不带 Request Body。 Get 的时候也可以带上 Request Body,只不过按照规范来说,不推荐服务端去根据 Request Body 的内容来改变输出。 @hxsf 被删了博客那不是 Get 的锅,而是权限控制的锅。 做成 Post 就算谷歌不能删,路人一样能删,反而安全性下降了。 |
27
orFish 2017-09-14 00:25:58 +08:00
POST 是幂等的。
ssl 下 2 者都安全 Get 也可以带 body |
28
iyaozhen 2017-09-14 01:06:12 +08:00 via Android
我也经常问这个问题,其实也没什么目的。相当于开场白吧,你说的时候可能面试官说不定在疯狂填上一个人的面试记录呢。
但里面也能看出点端倪,比如你侧重说缓存,那么就可以继续聊一聊 http 缓存机制,运营商劫持,DNS 等。比如说安全,那就深入聊 web 安全。循序渐进嘛,不能一来就反转二叉树吧 |
30
julyclyde 2017-09-16 23:17:39 +08:00
(一般情况下)带不带 body
可否缓存 语义 |