资讯专栏INFORMATION COLUMN

HTTP请求 的相关事宜

andycall / 1672人阅读

摘要:向指定资源提交数据比如提交表单,上传文件,请求服务器进行处理。通过指定资源的唯一标识在服务器上的具体存放位置,请求服务器创建或更新资源。请求中会把和一并发送,但是会先发送浏览器响应之后,再发送。

HTTP请求

HTTP请求由三部分组成:

请求行:包含请求方法、地址和HTTP的协议版本

消息报头:包含一系列的键值对

请求正文(可选):和消息报头之间有一个空行

信息报头中的主要信息有

Host 是请求报头域,用于指定被请求资源的 Internet 主机和端口号,它通常从 HTTP URL 中提取出来;

Connection 表示连接状态,keep-alive 表示该连接是持久连(persistent connection),即 TCP 连接默认不关闭,可以被多个请求复用,如果客户端和服务器发现对方有一段时间没有活动,就可以主动关闭连接;

Cache-Control 用于指定缓存指令,它的值有 no-cache, no-store, max-age 等,max-age=秒表示资源在本地缓存多少秒;

User-Agent 用于标识请求者的一些信息,比如浏览器类型和版本,操作系统等; Accept
用于指定客户端希望接受哪些类型的信息,比如 text/html, image/gif 等;

Accept-Encoding 用于指定可接受的内容编码;

Accept-Language 用于指定可接受的自然语言;

Cookie 用于维护状态,可做用户认证,服务器检验等,它是浏览器储存在用户电脑上的文本片段;

HTTP的请求方式

HTTP请求方式通常有几种方式

GET(SELECT):
从服务器取出资源(一项或多项),从服务器获取指定(请求地址)的资源信息,它通常只用于读取数据,就像数据库查询一样,不会对资源进行修改

POST(CREATE):在服务器新建一个资源。向指定资源提交数据(比如提交表单,上传文件),请求服务器进行处理。数据被包含在请求正文中,这个请求可能会创建新的资源,或者更新现有的资源

PUT(UPDATE): 在服务器更新资源(客户端提供改变后的完整资源)。通过指定资源的唯一标识(在服务器上的具体存放位置),请求服务器创建或更新资源。

PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。

DELETE(DELETE):从服务器删除资源。

HEAD:获取资源的元数据

OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

GET和POST的区别:

get的数据在url上,post在request body上

get只能进行url编码,post有多种编码方式

get是tcp/ip一次,post是两次

对get的参数有字符限制,而post没有(浏览器对URL的长度有限制,所以GET请求不能代替POST请求发送大量数据)

get请求会被浏览器缓存,但是post不会,除非手动设置

当浏览器回退时,get是没有影响的,但是post会再次提交请求

对参数的数据类型,get只能是ASCII字符,但是post没有限制

对于第三点中的:get只产生一个TCP数据包,post是两个数据包。get请求中会把header和data一并发送,但是post会先发送header,浏览器响应100 continue之后,再发送data。

GET请求是幂等的

举个例子:
GET只需要汽车跑一趟就能把货送到,而POST要跑两趟。第一趟先去和服务器打个招呼“hi,我等下要送一批货,你们打开门迎接我”,然后再回头把货送过去。

因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效,但是不能随便改变两种请求方式
1.get和post都有自己的语义,不能随便混用
2.网络环境好的时候,发一次包的时间和发两次宝的时间基本可以忽略。但是在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点
3.并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

HTTP特点

客户端/服务端模式

简单快速:客户端向服务器请求服务时,通过传送请求方式、请求地址和数据体(可选)即可

灵活:允许传输任意类型的数据对象,通过Content-Type标识

无状态:对事物处理没有记忆能力

小结

HTTP 是在网络上传输 HTML 的协议,用于浏览器和服务器的通信,默认使用 80 端口。

URL 地址用于定位资源,HTTP 中的 GET, POST, PUT, DELETE 用于操作资源,比如查询,增加,更新等

GET, PUT, DELETE 是幂等的,POST 是不幂等的。

POST VS PUT

   
- 使用 PUT 创建资源需要提供资源的唯一标识(具体存放位置),POST 不需要,POST 的数据存放位置由服务器自己决定

- 使用 PUT 更新某一资源,需要更新资源的全部属性;而使用 POST,可以更新全部或一部分值

- POST 是不幂等的,PUT 是幂等的,这是一个很重要的区别

GET 可提交的数据量受到 URL 长度的限制,HTTP 协议规范没有对 URL 长度进行限制,这个限制是特定的浏览器及服务器对它的限制。

理论上讲,POST 是没有大小限制的,HTTP 协议规范也没有进行大小限制,出于安全考虑,服务器软件在实现时会做一定限制

参考链接:

99%的人都理解错了HTTP中GET与POST的区别

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/88160.html

相关文章

  • php与唯一ID生成相关事宜

    摘要:原文地址唯一的生成并不是一件小事想说爱它也并不是像简单来一个这样一件容易的事为什么要唯一数据库的自增在分库的时候会是一场灾难假设分两个库因为每个库都会开始从开始自增届时系统中将会出现两个为的用户自增会暴露用户量或者其他业务量自增会让有心者 [原文地址:https://blog.ti-node.com/blog...] 唯一ID的生成并不是一件小事 , 想说爱它 , 也并不是像简单来一个...

    pepperwang 评论0 收藏0
  • PlusMedia自媒体联盟

    摘要:扶持权利联盟成员有权自荐所属自媒体参与的扶持计划,包括但不限于品牌背书资源扶持资金扶持。 PlusMedia PlusMedia自媒体联盟,是国内一线互联网技术自媒体人最早自觉成立的民间合作 互助组织,联盟成员近五十位,覆盖逾70万互联网技术从业人员,是当前中国最大的互联技术圈的自媒体联盟。该平台旨在促进互联技术自媒体人价值的挖掘、培育、服务和变现,为广大互联网技术人员提供最新技术,培...

    Mertens 评论0 收藏0
  • 苹果高管正拜访亚洲供应商 探讨苹果汽车生产事宜

    摘要:从外媒的报道来看,苹果与亚洲汽车供应商目前探讨的焦点,是在全球芯片短缺给汽车行业带来重大影响的大背景下,如何生产苹果汽车。值得注意的是,此前也曾出现苹果高管拜访亚洲汽车零部件制造商和整车组装厂商的消息。 .markdown-body{color:#595959;font-size:15px;font-family:-apple-system,system-ui,BlinkMacSystem...

    macg0406 评论0 收藏0
  • UCloud云主机云服务器续费

    摘要:如果用户不进行充值并手动续费,则扣费失败,资源状态显示为已过期产品到期通知提醒。续费有效期过期产品的续费。有效期内的续费行为是在原续费周期结算后开始新的方式。1、预付费产品支持开关自动续费功能 开启自动续费开关,当您的账户余额充足时,系统会在即将到期时,自动为您续费。需要特别说明的是,自动续费是按之前的配置和时长为您自动续费。当账户余额不足时,系统在资源即将到期时,会扣费失败,资...

    whlong 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<