傲娇大少之——【GET请求和POST请求】

若有来生,不婚不嫁,不孕不养,不做谁的妻,不为谁的娘。
只做自家女,养父母终老。
孑然一身,我行我素,随心所欲!
~诶,我好像不用等到来生。。。

关于http协议的get和post请求

get和post本质上都只是http协议的一种请求方式。

GET请求和POST请求的区别

估计很多面试官都会提到这个问题,总结一下:

  • GET请求参数通过url传递,而POST请求的参数放在request body中,因此GET请求的安全性相对POST较差,尽量不要用来传递敏感信息。
  • GET请求会被浏览器主动缓存,而POST不会被缓存,除非手动设置。
  • GET请求在URL中传送的参数是有长度限制的,而POST对请求的数据长度没有要求。
    (需要注意的是 HTTP 协议中并未规定 GET 请求的长度。 这个长度限制主要是由浏览器和 Web 服务器所决定的,并且各个浏览器对长度的限制也各不相同 。)
  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留,因此POST请求更为安全。
  • GET在浏览器回退/刷新时是无害的,而post会再次提交数据。
    (这源于GET的幂等性:指的是无论调用这个URL 多少次,都不会有不同的结果的 HTTP 方法。即get无论执行多少次,都不会影响最终存储的结果,但是POST每次都会创建新的资源。)
  • GET产生的URL地址可以被收藏为书签,而POST不可以。
    (web浏览器收藏书签时,保存的是当前的URL,GET请求的参数都包含在URL中,所以每次打开都不会对结果有影响,即GET的幂等。POST其实也可以被收藏,只是保存的只有URL,参数会丢失,再次打开回出错。)
  • GET请求只能进行url编码,而POST支持多种编码方式。
    (意思是如果我们的参数中出现了特殊字符(非ASCII字符)出现乱码的情况下,一般我们会通过编码解决。get请求的时候,浏览器会自行对url进行URL encode,而post请求是可以在meta标签中设置编码方式的。)
  • GET产生一个TCP数据包;POST产生两个TCP数据包。
    (get请求览器会把请求头和请求数据一并发送出去,服务器响应 200 ok(返回数据)。POST 方法会产生两个 TCP 数据包,浏览器会先将请求头发送给服务器,待服务器响应100 continue,浏览器再发送请求数据,服务器响应200 ok(返回数据)。这么看起来 GET 请求的传输会比 POST 快上一些(因为GET 方法只发送一个 TCP 数据包),但是实际上在网络良好的情况下它们的传输速度基本相同。)

在这里插入图片描述

拓展:

深入了解http协议

get和post只是http协议的两种请求方式,所以我们必须要深入的了解http协议才行!我特么还是一如既往的罗里吧嗦,估计是没救了……

HTTP协议(HyperText Transfer Protocol,超文本传输协议):

  • 首先,理解超文本。
    超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。超文本更是一种用户界面范式,用以显示文本及与文本之间相关的内容。超文本的格式有很多,目前最常使用的是超文本标记语言(HTML)。

  • 其次,http是一个网络传输协议。
    我们知道所谓计算机网络,其实只是传播信息的载体。它基于一些共同的协议,进行信息和资源的共享。而http协议就是其中的一种针对www万维网的支撑协议。WWW (World Wide Web,万维网)是存储在Internet计算机中的数量巨大的文档的集合。WWW服务器通过超文本标记语言(HTML)把信息组织成为图文并茂的超文本。

综上,http协议本质上就是从www服务器把超文本信息传输到本地浏览器的协议。

HTTP协议的历史:

蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,定义了HTTP协议中现今广泛使用的一个版本——HTTP 1.1。

2014年12月,互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis(httpbis)工作小组将HTTP/2标准提议递交至IESG进行讨论,于2015年2月17日被批准。 HTTP/2标准于2015年5月以RFC 7540正式发表,取代HTTP 1.1成为HTTP的实现标准。

HTTP协议的工作原理:

  • HTTP协议是基于TCP/IP之上的协议,它不仅保证正确传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

HTTP请求方法可不止get和post两种:

  • HTTP0.9 定义了三种请求方法: GET方法。
  • HTTP1.0 新增了两种种请求方法: POST 和 HEAD方法。
  • HTTP1.1 新增了六种请求方法: OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

想知道你使用的是哪个版本的http,可以在浏览器的开发者工具中查看:
在这里插入图片描述
在这里插入图片描述

关于HTTP协议的请求方法:
请求方法描述注意
GET向一个特定的资源发出请求GET的请求应该只被用于获取数据
HEAD与GET请求类似,但没有响应体通常用于获取报头
POST向一个特定的资源提交数据处理请求通常会导致服务器上资源的修改或新资源的建立
OPTIONS用于描述目标资源的通信选项,即返回服务器针对特定资源所支持的HTTP请求方法也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
PUT从客户端向服务器端传送指定的数据替换特定的文档内容。一般用于向指定资源上传其最新内容
PATCH用于对指定的资源应用部分修改。
DELETE请求服务器删除指定的资源删除request-url指向的资源
TRACE沿着到目标资源的路径执行一个消息环回测试回显服务器收到的请求,通常用于测试和诊断
CONNECThttp隧道技术连接代理服务器,让服务器代替用户去访问其它网页,之后把数据原原本本的返回给用户。CONNECT方法是需要使用TCP直接去连接的,所以不适合在网页开发中使用
百度百科上关于超文本历史,感觉挺好玩的,感兴趣可以看看:

945年,万尼瓦尔·布什(Vannevar Bush)提出了被称为“存储扩充器”(memory extender)的概念,这是具有开创性的信息组织方法,形成了今天超文本的基础。文本间的交叉引用链接使使用者可以用非线型的方式查阅信息,类似于人类思维的方式——也就是说,通过联想而不是直线顺序。为了制造这些“联想”链接,单个的因素会被标上标签,从而可以得到打开系统的动态链接。设计师的任务是创建内容,决定链接,用非线型组织信息的方式做出简易而明确的引导。

1963年,德特·纳尔逊(Ted Nelson)创造了术语“超文本”。1981年,德特在他的著作中使用术语“超文本”描述了这一想法:创建一个全球化的大文档,文档的各个部分分布在不同的服务器中。通过激活称为链接的超文本项目,例如研究论文里的参考书目,就可以跳转到引用的论文。

超级文本,是美国学者纳尔逊1965年自造的英语新词。hyper在古希腊语中意为“超”“上”“外”“旁”等。纳尔逊对“超文本”的解释是:“非相续性著述(non—sequential writing),即分叉的、允许读者作出选择、最好在交互屏幕上阅读的文本。”“大量的书写材料或图像材料,以复杂的方式相互联系,以至于不能方便地呈现在纸上。它可能包含其内容或相互关系的概要或地图,也可能包含自已经审阅过它的学者所加的评注、补充或脚注。”另据牛津英语词典1993年版对“超文本”的解释是:“一种并不形成单一系列、可按不同顺序来阅读的文本,特别是那些以让这些材料(显示在计算机终端)的读者可以在特定点中断对一个文件的阅读以便参考相关内容的方式相互连接的文本与图像。”

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值