Web应用和HTTP协议

1、HTTP协议

由两部分程序实现:一个客户机程序和一个服务器程序,它们运行在不同的端系统中,通过交换HTTP消息进行会话。HTTP定义了浏览器和Web服务器之间的消息格式以及客户机和服务器是如何进行消息交换的。

2、HTTP使用TCP而不是UDP作为它的传输层协议。

浏览器发起一个与服务器的TCP连接,一旦连接建立,浏览器和服务器进程就可以通过套接字接口(就是发送/接收函数调用)访问TCP。

3、HTTP是无状态的。

服务器向客户机发送被请求的文件时,并不存储任何关于该客户机的状态信息。假如一个特定的用户在几秒钟内多次请求同一个对象,服务器并不会因为刚刚为该用户提供了该对象就不再做出反应,而是重新发送该对象。但服务器一般会在日志文件中记录用户的访问历史。

4、持久连接和非持久连接
  • 如果浏览器使用一个TCP连接向服务器请求多个Web页面对象,那么称为持久连接。
  • 如果浏览器使用一个TCP连接向服务器请求一个Web页面对象,也就是说请求一个对象后这个连接就关闭了,就称为HTTP的非持久连接。
5、 HTTP消息格式

HTTP消息有两种:请求消息和响应消息。

  • HTTP请求消息
GET /somedir/Page.html HTTP 1 .1
Host: www.someschool.edu.cn
Connection: Keep Alive
User-agent: Moailla/2.0
Accept-language: fr
Entity body

HTTP 请求消息的第一行叫做请求行(request line),其后继的行叫做头部行(header line )。
请求行有3个字段:方法字段、URL字段和HTTP协议版本字段。
方法字段可以取值GET、POST、HEAD、PUT和DELETE。

  • 响应消息
    分成三个部分。初始状态行、首部行,然后是实体。
HTTP 1.1  200 OK
Connection: Keep Alive
Date: Tue,09 Aug 2017 23:23:02 GMT
Server: Apache/3 .0(unix)
Last-Modified: Sun,6May 2017 12:13:24 GMT
Content-Length: 6821
Con}tent-Tyge: text/html
(data …)

状态行有3个字段:协议版本、状态码和相应状态信息。
首部行中Date:首部行指示服务器产生并发送该响应消息的日期和时间。
Last-Modified:首部行指示了对象创建或者最后修改的日期和时间。它对可能在客户
机也可能在网络缓存服务器上的对象缓存来说非常重要。
实体部分包含了所请求的对象。

6、常见的状态码

状态码 说明
200 响应成功
302 跳转,跳转地址通过响应头中的Location属性指定
400 客户端请求有语法错误,不能被服务器识别
403 服务器接收到请求,但是拒绝提供服务(例如认证失败)
404 请求资源不存在
500 服务器内部错误

7、用户与服务器的交互:cookie

HTTP使用cookie技术使Web站点能够跟踪用户。
cookie技术有4个组成部分:
①在HTTP响应消息中有一个set-cookie首部行;
②在HTTP请求消息中有一个cookie 首部行;
③在用户端系统中保留有一个cookie文件,由用户的浏览器管理;
④在Web站点有一个后端数据库。

cookie常用于购物车、用户登录认证等。cookie的访问控制是用户隐私访问控制的重要组成部分,很多浏览器(IE等)都可以进行cookie访问权限的设置。

8、 Web缓存

Web缓存(web cache)也叫代理服务器(proxy server),可以配置用户的浏览器,使得
用户的所有HTTP请求首先指向Web缓存。如果设置浏览器每次访问一个Web网站时都通过缓存服务器。浏览器会首先建立一个到Web缓存服务器的TCP连接,并向Web缓存服务器发送一个HTTP请求。Web缓存服务器检查本地是否存储了该对象拷贝。如果有,Web缓存服务器就用HTTP响应消息向客户机浏览器返回该对象。

如果web缓存服务器没有该对象,它就与该对象的原始服务器建立TCP连接,请求该
对象。当web缓存服务器接收该对象时,它在本地存储一份拷贝,并用HTTP响应消息向客户机的浏览器发送该拷贝。

在因特网上部署Web缓存服务器有两个原因。首先,可以加快对客户机请求的响应时间。其次,Web缓存可以大大减少一个单位内部网与因特网接入链路上的通信量。

条件GET方法
HTTP协议有一种机制,Conditional Get方法允许缓存服务器保证它的对象是最新的。

如果①请求消息使用GET方法。②请求消息中包含一个If-modified-since:首部行,那么这个HTTP请求消息就是一个条件GET请求消息。
使用该条件GET消息告诉服务器,如果当自指定日期之后修改过该对象那么重新发送该对象,反之不需要发送。

Etag
Etag是服务器对象的唯一标识符, 浏览器也可以根据ETag值缓存数据。 客户机再次请求服务器时,通过If-None-Match:字段告知服务器客户端缓存数据的ETag值。

服务器收到请求后发现头部的If-None-Match,与被请求对象的唯一标识进行比对。如果两个值不相同,说明对象已被改动,则响应此对象,反之告知浏览器可以使用其缓存。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值