HTTP(一)

一、请求和响应报文

1.请求报文

2.响应报文

二、HTTP方法

客户端发送的请求报文第一行为请求行,包含了方法字段,方法有:GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS,CONNECT,TRACE。

1.GET:获取资源

当前网络请求中,绝大部分使用的是GET方法。

  • GET 请求可被缓存
  • GET 请求保留在浏览器历史记录中
  • GET 请求可被收藏为书签
  • GET 请求不应在处理敏感数据时使用
  • GET 请求有长度限制
  • GET 请求只应当用于取回数据

2.HEAD:获取报文首部

和GET方法类似,但是不返回报文实体主体部分。(主要用于确认URL的有效性以及资源更新的日期时间等)

3.POST:传输实体主体

POST主要用来传输数据,而GET主要用于获取资源。

4.PUT:上传文件

由于自身不带检验机制,任何人都可以上传文件,存在安全问题,一般不使用。

5.PATCH:对资源进行部分修改

PUT与可以用于修改资源,但是只能完全替代原始资源,PATCH允许部分修改(save or update)。

6.DELETE:删除文件

与PUT功能相反,并且同样不带验证机制。

7.OPTIONS:查询支持的方法

查询指定的URL能够支持的方法。

会返回Allow:GET,POST,HEAD,OPTIONS这样的内容。

8.CONNECT:要求在与代理服务器通信时建立隧道

使用SSL(Secure Sockets Layer,安全套接层)和TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。

9.TRACE:追踪路径

服务器会将通信路径返回给客户端。

发送请求时,在Max-Forwards首部字段中填入数值,每经过一个服务器就会减1,当数值为0时就停止传输。

通常不会使用TRACE,并且它容易受到XST攻击(Cross-Site Tracing,跨站追踪)。

三、HTTP首部

有通用首部字段、请求首部字段、响应首部字段和实体首部字段。

1.请求首部字段

首部字段名说明
Accept用户代理可处理的媒体类型,

可使用type/subtype这种形式,一次指定多种媒体类型

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Charset优先的字符集
Accept-Encoding

常用的几种编码格式:

gizp:由文件压缩程序gzip(GUN zip)生成的编码格式

compress:由UNIX文件压缩程序compress生成的编码格式

deflate:组合使用zlib格式及由deflate压缩格式生成的编码格式

jdentity:不执行压缩或不会变化的默认编码格式

Accept-Language使用权重值q表示相对优先级
AuthorizationWeb 认证信息
Expect期待服务器的特定行为
From用户的电子邮箱地址
Host请求资源所在服务器
If-Match比较实体标记(ETag)
If-Modified-Since比较资源的更新时间
If-None-Match比较实体标记(与 If-Match 相反)
If-Range资源未更新时发送实体 Byte 的范围请求
If-Unmodified-Since比较资源的更新时间(与 If-Modified-Since 相反)
Max-Forwards最大传输逐跳数,就是指定Max-Forwards的值,每经过一次转发,就-1.当值变为0.直接返回响应
Proxy-Authorization代理服务器要求客户端的认证信息
Range实体的字节范围请求
Referer对请求中 URI 的原始获取方
TE传输编码的优先级
User-AgentHTTP 客户端程序的信息

四、Cookie

HTTP/1.1引入Cookie来保存状态信息。

Cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器之后向同一服务器再次发起请求时被携带上,用于告知服务端两个请求是否来自同一浏览器。由于之后每次请求都会需要携带 Cookie 数据,因此会带来额外的性能开销(尤其是在移动环境下)。

1.用途:

  1)会话状态管理(用户登录状态,购物车,游戏分数)

  2)个性化设置(用户自定义设置,主题等)

  3)浏览器行为跟踪(如跟踪用户行为等)

2.创建过程:

服务器发送的响应报文包含 Set-Cookie 首部字段,客户端得到响应报文后把 Cookie 内容保存到浏览器中。

HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: yummy_cookie=choco
Set-Cookie: tasty_cookie=strawberry

[page content]

客户端之后对同一个服务器发送请求时,会从浏览器中取出 Cookie 信息并通过 Cookie 请求首部字段发送给服务器。

GET /sample_page.html HTTP/1.1
Host: www.example.org
Cookie: yummy_cookie=choco; tasty_cookie=strawberry

3.分类:

  1)会话期Cookie:浏览器关闭之后它会被自动删除,也就是说她仅在会话期内有效。

  2)持久性Cookie:指定一个特定的过期时间(Expires)或有效期(max-age)之后就成了持久性的Cookie。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值