一看到这个标题,是不是有又起当年刚刚接触web的时候被get和post支配的恐怖。想当年为了面试这个题的答案都已经背烂了:
- GET请求在URL中传送的参数是有长度限制的,而POST么有。
- GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
- GET参数通过URL传递,POST放在Request body中。
- GET请求只能进行url编码,而POST支持多种编码方式。
- GET请求浏览器会自动缓存,且只有IE浏览器有这种行为(万恶的IE浏览器啊啊啊啊),而POST不会。
但是如果你觉得POST和GET的渊源只有这些的话,你就大错特错了。其实POST和GET作为我们最常用的两种请求方式,他们的底层原理其实是相同的,那就是TCP协议。没错,就是那个需要三次握手的TCP协议(有关tcp/ip协议的知识可以查看该文章)。那既然他们底层原理是一样的,为什么还有这么多区别呢?其实这些区别只是一些约定俗成的规定,如果你愿意,完全可以通过技术手段来把GET请求的参数放在请求体中,把POST请求的参数拼在url上。但这样不光增加了工作量,还增加了代码量(我严重怀疑你是为了水工时才这么干的)。
get请求在IE浏览器下自动缓存的带来的问题和解决方案
- 在url后面拼一个时间戳,就是让每次的get请求不一样,也就不会在cache过期前出现每次请求得到的数据都一样了(浅谈浏览的缓存问题)。
- 在发送请求的时候设置if-Modifed-Since
具体带来的问题参考下文
https://blog.csdn.net/newbird105/article/details/44835743