HTTP协议:Get&Post / 无状态 / 安全漏洞

更多
2021年04月25日 17点45分 作者:叶飞 修改

常见面试题:GET和POST


HTTP协议

客户端和服务器端交互的信息分为::

  • Request/Response:实际上,用户在浏览器中输入URL,回车,浏览器就会向服务器发送一个请求(Request);然后,服务器就会响应(Response)这个请求,将相应的HTML文件返回给浏览器。

  • Header/Body:无论是Request和Response,除了URL和Html文件,还有一些额外的信息,存放在他们的Header中。

GET和POST就是定义在Request的Header中的,向服务器说明,用何种方式方法(method)进行请求的标记数据。

一般来说,地址栏直接输入网址,或者在网页中点击链接,默认都是GET方式;只有在form标签中定义了method="post",浏览器才会使用POST方式发送请求。我们可以使用调试器F12,在Network中查看:




来龙去脉:(参考HTTP的发展

  • 最早的HTTP协议既没有POST,也没有Header……

  • Header(尤其是其中的ContentType)为HTTP的发展(扩展)立下了汗马功劳


常见错误

在网上流行着很多说法,很多都是不准备的。大致上来说,错误原因有两类:

1)没有区分“HTTP协议”和“浏览器实现”:比如说“GET传递数据有个数/长度/大小限制”等,这些限制都是浏览器的限制,HTTP协议从未限制过URL参数。

2)没有区分关于“隐蔽”和“安全”:POST不会在地址栏中显示Form Data,我们可以说它更隐蔽一点,但它一样用明文(没有加密)传递,怎么就安全了呢?我们都能用F12看到,黑客们还获取不到么?^_^注意,HTTP本身是一个不安全的协议,在Web开发中,安全是一个非常重要的考量因素。大家时刻牢记飞哥的两句话:

  • 前端没有任何安全性可言
  • 后端永远不要相信前端

最后,总结一下,GET和POST:

  • 本质区别:http头中method项定义不同。定义为method=POST,可以用Form Data传递数据
  • 语义层面:GET是请求得到(读);POST是传递给服务器(写)


开发选择

post:form表单

get:需要url参数





HTTP无状态

震惊:HTTP的服务器端并不会记录每一次的请求是“究竟是由谁”发起的!

对服务器而言,它只是埋头干活:

  • 接收一个请求(Request)
  • 处理……
  • 给客户端一个响应(Response)
  • 忘掉之前所有的一切
  • 接收下一个请求(Request)
  • 处理……
  • 给客户端一个响应(Response)
  • 忘掉之前所有的一切
  • ……
换言之,对服务器而言,每一次的请求都是独立的。

为什么呢?主要是基于历史性能的考虑。

那服务器怎么记住我是谁?……



cookie/session





HTTP协议 无状态 GET和POST 安全漏洞
赞: 0 踩: 0

打赏
已收到打赏的 帮帮币

你的 打赏 非常重要!
为了保证文章的质量,每一篇文章的发布,都已经消耗了作者 1 枚 帮帮币
没有“帮帮币”,作者无法发布新的文章。

全系列阅读
下一篇: 已经是最后一篇了……
评论 / 0

编程基础


项目管理相关

需求发布、开发规划、部署、测试,源代码版本管理(git)等……

逸闻史话

认识计算机

编程语言

数据结构和算法

Web开发基础

全部
关键字



帮助

反馈