http再邂逅
1.http特点总结:
- 支持客户服务器模式:客户端向服务器发送请求,服务器响应请求。服务器端响应请求,并进行相应的服务
- 简单快速:客户端请求服务时,只需要请求方法和路径,常用的方法:get,post,head。每种方法规定了客户与服务器联系的类型不同,
- 灵活:允许传输任意类型的数据对象,正在传输的类型由Content_Type加以标示
- 无连接:限制每次连接只处理一个请求,处理完客户端的请求后,并收到客户端的应答,即断开连接,节省传输时间
- 无状态:对处理事务没有记忆能力,缺状态少意味着如何后续需要前面的信息,必须重传,导致连接传达的数据量增大,有其他机制可解决(keep_alive)
2.URI与URL
URI:统一资源标示符,一个紧凑的字符串来标示抽象或物理资源
URL:统一资源定位符,是URI的一个子集,除了确定一个资源,还提供了访问该资源的主要访问机制
3.HTTP报文分析
1.请求报文:
HTTP报文头:通用报文头,请求报文头,响应报文头和实体报文头
通用报文头:
响应报文头
请求报文头:
实体报文头:
常用的报文头
- ACCEPT:浏览器可以接受的媒体类型,accpet:* / *,可以处理所有的类型,可以设置优先级,权重q值
- Accept-Encording:浏览器声明自己接受的编码方法,通常指定压缩方法
- Accept-Language:浏览器声明语言
- Connect:keep-alive,客户端和服务器之间传输http数据的Tcp连接不会关闭
- Connect:close与上一条相反
- Host:请求报文域主要用于指定被请求资源的internet主机和端口号,从URL中提取
- Refer:告诉服务器从哪一个页面链接过来的,服务器借此可以获得一些信息用于处理
- User-Agent:告诉HTTP服务器,客户端使用的操作系统和浏览器的名称和版本,进行一些兼容设计
- Content:说明报文体内对象的媒体类型
2.响应报文
4.http请求方法剖析
- GET:GET方法用于使用给定的URI从给定服务器中检索信息,即从指定资源中请求数据。使用GET方法的请求应该只是检索数据,并且不应对数据产生其他影响。
- POST:向指定资源提交数据进行处理请求(例如提交表单。数据被包含在请求体中,POST请求可能会导致新的资源的建立和/或已有资源的修改。
- PUT:从客户端向服务器传送的数据取代指定的文档的内容,put:幂等的,POST:不是幂等的,用put方法传输资源,基本已经退出。
- HEAD:类似于get请求只不过,返回响应没有具体的内容,用于获取报头
- DELETE:请求服务器删除指定的资源
- OPTIONS:查询请求URI指定资源的支持的方法
- TRACE:用于回显服务器收到的请求,用于测试或诊断
- CONNECT:不常用,创建用户端与所请求资源之间的双向的通道
5.状态码
是用来表示网页服务器超文本传输协议的响应转态3位数字代码
状态码 | 英文名称 | 描述 |
---|---|---|
200 | OK | 请求成功,响应头或数据体将由此响应返回 |
202 | ACCEPTED | 已接受请求,未处理完成 |
206 | partialContent | 部分内容,服务器成功处理了部分Get请求 |
301 | Moved Permanently | 请求的资源已经被永久移动,自动定向到新的URI |
302 | Found | 临时移动,客户端使用原来的URI |
400 | Bad Request | 客户端请求的语法错误,服务器 |
401 | Unauthorized | 要求用户身份验证 |
403 | Forbidden | 拒绝执行此次请求 |
404 | Not found | 无法找到请求的资源 |
500 | internal Server error | 服务器内部错误 |
502 | Bad Gateway | 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求 |
6.HTTP状态管理:CooKie,Session
由于http协议是无状态的,通过这两种技术解决无状态带来的一些缺点
COOKIE:实际上就是一小段的文本信息,客户端请求服务器,如果服务器需要记录该用户的状态,就向客户端颁发一个Cookie,客户端浏览器会把cookie保存起来,当浏览器再次请求该网站时将网址以及cookie一同交给服务器,服务器检查该cookie来辨认用户的状态
可以自己去找一个网站输入:javascript:alert(document:cookie),来查看cookie。
**Session:**是另一种记录客户状态的机制,保存在服务器上,客户端浏览器访问服务器的时候,服务器把客户端信息某种形式记录在服务器上,再次访问时只需要从该Session中查找客户的转态就行。
保存sssion方式:cookie,URL重写,隐藏表单
session有效期:session超时便会失效,主动调用HttpSession.invalidate()
两者不同:1.存放位置不同 2.安全性不同 3.有效期上的不同 4.服务器压力的不同