HTTP详解

HTTP是什么

HTTP是互联网上应用最为广泛的一种网络协议,是一个客户端和服务端请求和应答的标准,用于从服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效、使网络传输减少。

URL

URL:Uniform Resource Locator,统一资源定位符,就是我们俗称的 "网址" ,用来唯一地确定一个网络资源。

HTTP的特点

● 灵活可扩展:http非常灵活,在报文中没有做过多的限制,只要按照其规则,可以自己定义字段,在传输过程中也不仅仅限于txt文本格式,也可以传输图片,视频,压缩包等等任意数据。

● 可靠性:http是基于tcp/ip传输的,因为tcp/ip是一个可靠的传输协议,所以是一个可靠的传输。

● 请求-应答:http是一个使用请求-应答通信模式,一发,一收,有去有来的协议。

● 无状态:是一个无状态协议,服务器对之前的信息不做任何记录,可以减轻服务器的负担,让服务器分配出更多的cpu和内存来对外提供服务。

● 比较万能:http是一个万能的应用层协议,不在意性能http可以传输任何东西,没有太多局限性,不像其它协议只局限在一小部分。例如FTP只能传输文件、SMTP只能发送邮件、SSH只能远程登陆等。

HTTP报头

HTTP请求

● 首行:方法 url 版本。

● Header:请求的属性,冒号分隔的键值对;每组属性之间用 \n 分隔,遇到空行表示Header结束。

● 空行:用来分隔请求报头和请求正文。

● Body:空行后面的内容都是Body。Body允许为空字符串,如果Body存在,则在Header中会有一个 Content-Length属性来标识Body的长度。

HTTP响应

● 首行:版本号 状态码 状态码解释。

● Header:响应的属性,冒号分隔的键值对;每组属性之间用 \n 分隔,遇到空行表示Header结束。

● 空行:用来分隔响应报头和响应正文。

● Body:空行后面的内容都是Body。Body允许为空字符串,如果Body存在,则在Header中会有一个Content-Length属性来标识Body的长度。如果服务器返回了一个html网页,那么html页面内容就是在Body中。

HTTP请求方法

POST、DELETE、GET、PUT类似于对服务器资源的增、删、查、改。

● POST:/url 创建

● DELETE:/url/xxx 删除

● GET:/url/xxx 查看

● PUT:/url/xxx 更新

GET 与 POST

概念:

1.GET方法叫做,获取,是最常用的方法,默认一般获取所有的网页,都是GET方法,但是如果要通过GET方法提交参数,是通过URL进行参数拼接,从而提交给server端。

2.POST方法叫做:推送,是提交参数比较常用的方法,通过POST方法提交参数,一般是通过正文部分提交的。

区别:

1.参数提交的位置不同,POST方法比较私密(私密 != 安全),不会回显到浏览器的url输入框。GET方法不私密,会将重要的信息回显到url的输入框中,增加了被盗取的风险。

2.GET是通过url传参的,而url是有大小限制的,和具体浏览器有关。而POST方法是由正文部分传参的,一般没有大小限制。

3.GET请求会被浏览器主动缓存,GET请求参数也会被完整保留在浏览器历史记录里,而POST中的参数不会。

4.GET是幂等的,POST不是

如何选择:

1.获取资源时使用GET,如果要提交参数,不敏感,数量非常少,也可以使用GET。

2.否则就是用POST方法。

POST 与 PUT

区别:

1.使用PUT时,必须明确要操作的对象,如果对象不存在,则创建对象;如果对象存在,则全部替换目标对象。

2.同样POST既可以创建对象,也可以修改对象。但用POST创建对象时,之前并不知道要操作的对象,由HTTP服务器为新创建的对象生成一个唯一的URI;使用POST修改已存在的对象时,一般只是修改目标对象的部分内容。

PUT是幂等的,意味着相同的PUT请求不管执行多少次,结果都是一样的。但POST则不是,就类似与"x = 1"这句话是幂等的,无论执行多少次,变量x的值始终都是 1;但"x++"就不是幂等的,因为每执行一次,变量x的值都不一样。

HTTP Header属性

请求

Accept:指定客户端能够接收的内容类型。

User-Agent:声名用户的操作系统和浏览器版本信息,也就是发出请求的用户信息。

Content-Type:数据类型。

Content-Length:Body的长度。

Referer:当前页面是从哪个页面跳转过来的。

Host:客户端告诉服务器,所请求的资源是在哪个主机的哪个端口上。

Cookie:用于在在客户端存储少量信息,通常用于实现会话的功能。

Accept-Encoding:指定浏览器可以支持的web服务器返回内容压缩编码类型。

响应

Content-Type:数据类型。

Content-Length:Body的长度。

Location:搭配3xx状态码使用,告诉客户端接下来要去哪里访问。

Set-Cookie:设置Http Cookie,告诉客户端服务器需要的信息。

状态码

1xx:信息状态码,接收到请求正在处理

2xx:成功状态码,请求正常处理完毕

200:从客户端发出的请求被服务器正常处理。

3xx:重定向状态码,需要进行附加操作来完成请求

301:永久重定向,表明目标资源被永久的移动到了一个新的 URI,任何未来对这个资源的引用都应该使用新的 URI。

302:临时重定向,表明目标资源临时移动到了另一个 URI 上。 客户端之后的请求中,还应该使用原本的 URI。

307:临时重定向,与302的作用相同,区别是,302在重定向后的请求会把POST方法改为GET方法,而307不会。

4xx:客户端错误状态码,服务器无法处理请求

403:服务器收到请求但拒绝提供服务,原因有很多,如:权限不足、IP被拉如黑名单等。

404:客户端请求的资源不存在。

5xx:服务器错误状态码,服务器处理请求出错

503:服务器暂时处于过载或者停机维护中,现在无法处理请求。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

waywt1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值