HTTP协议学习

浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

在这里插入图片描述
主要特点:
1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。
2、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
3.无连接:无连接的含义是限制每次连接只处理一个请求服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
4.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。
5、支持B/S及C/S模式。

请求request

请求报文
在这里插入图片描述
最后一行是报文体,是向服务器请求的参数,如果是GET请求的话,这一行是个空行

常见属性及含义

Accept:请求报文可通过一个“Accept”报文头属性告诉服务端 客户端接受什么类型的响应。
Accept:text/plain
表示浏览器只接受纯文本数据的服务器响应

Referer :表示这个请求是从哪个URL过来的,假如你通过google搜索出一个商家的广告页面,你对这个广告页面感兴趣,鼠标一点发送一个请求报文到商家的网站,这个请求报文的Referer报文头属性值就是http://www.google.com

Cache-Control :对缓存进行控制,如一个请求希望响应返回的内容在客户端要被缓存一年,或不希望被缓存就可以通过这个报文头达到目的。

Cache-Control: no-cache  

表示不希望被缓存

Content-Encoding:字段说明浏览器可以接受哪些压缩方法来接收服务器发来的文件。

Content-Encoding: gzip
Content-Encoding: compress
Content-Encoding: deflate

`

响应response

HTTP的响应报文也由三部分组成(响应行+响应头+响应体): 在这里插入图片描述
状态码:也就是图片第一行的数字,
HTTP的响应状态码由5段组成:

  • 1xx 消息,一般是告诉客户端,请求已经收到了,正在处理
  • 2xx 处理成功,一般表示:请求收悉、我明白你要的、请求已受理、已经处理完成等信息.
  • 3xx 重定向到其它地方。它让客户端再发起一个请求以完成整个处理。
  • 4xx 处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,客户端未被授权,禁止访问等。
  • 5xx 处理发生错误,责任在服务端,如服务端抛出异常,路由出错,HTTP版本不支持等。

通常有这么几个常见的状态码:
200 OK :表示处理成功了

304 Not Modified
告诉客户端,你请求的这个资源至你上次取得后,并没有更改,你直接用你本地的缓存吧

404 Not Found
你最不希望看到的,即找不到页面。如你在google上找到一个页面,点击这个链接返回404,表示这个页面已经被网站删除了,google那边的记录只是美好的回忆。

500 Internal Server Error

看到这个错误,就应该查查服务端的日志了,肯定抛出了一堆异常

响应头

里面有一些属性,比如常用的:
Cache-Control
响应输出到客户端后,服务端通过该报文头属告诉客户端如何控制响应内容的缓存。

ETag
一个代表响应服务端资源(如页面)版本的报文头属性,如果某个服务端资源发生变化了,这个ETag就会相应发生变化。它是Cache-Control的有益补充,可以让客户端“更智能”地处理什么时候要从服务端取资源,什么时候可以直接从缓存中返回响应。

Location
我们在JSP中让页面Redirect到一个某个A页面中,其实是让客户端再发一个请求到A页面,这个需要Redirect到的A页面的URL,其实就是通过响应报文头的Location属性告知客户端的

Set-Cookie

服务端可以设置客户端的Cookie,其原理就是通过这个响应报文头属性实现的: `Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1

`Content-Length
一个TCP连接现在可以传送多个回应,势必就要有一种机制,区分数据包是属于哪一个回应的。这就是Content-length字段的作用,声明本次回应的数据长度。

Content-Length: 3495

告诉浏览器这次回应有3495个字节,接收3495以后接收的就是下一次回应了。使用Content-Length字段的前提条件是,服务器发送回应之前,必须知道回应的数据长度。

响应体

就是我们请求服务器需要的东西,服务器发给你了。

学习链接:
HTTP协议中的Accept与Content-Type的区别
为什么说http协议是无状态协议
HTTP 协议入门
HTTP协议学习
通信协议

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值