HTTP 协议和服务

目录

一、概述

二、HTTP 协议的基本过程

请求

响应

无状态特性

内部过程

向服务器发出请求的方法

HTTP 1.1 持久连接

使用 Cookies 的状态管理

三、HTTP 报文

四、返回结果的 HTTP 状态码

五、Web 服务器

六、HTTP 首部

HTTP 首部字段

HTTP/1.1 通用首部字段

请求首部字段

响应首部字段

实体首部字段

为 Cookie 服务的首部字段

七、HTTPS

HTTP 的缺点

HTTP + 加密 + 认证 + 完整性保护 = HTTPS

八、其他

HTML

动态 HTML

Web 应用

XML


一、概述

1.应用层 HTTP 协议是 Web 的核心。

2.Web 页面(web page)是客户端和服务器交流的基本内容,有多个对象构成,对象是可由 URL 进行寻址(存放于 Web 服务器)的文件,例如 HTML 文件、JPG 图像、GIF 图像等。

3.Web 页面大多数由一个基本 HTML 文件和很多 HTML 文件中所引用的对象构成。这个基本的 HTML 文件使用文件中的内置 URL 来引用本页面所使用的其他对象。

4.一个 URL(Union Resource Locator,统一资源定位符)由两部分构成:

  • 存放该对象的服务器主机名
  • 该对象的路径名

例如 https://www.nowcoder.com/activity/oj 中,www.nowcoder.com是一个主机名,/activity/oj是一个路径名。

二、HTTP 协议的基本过程

请求

一个客户端与服务器建立连接后,发送一个请求给服务器,请求报文是由 请求方法、 请求 URI、 协议版本、 可选的请求首部字段( MIME 信息,包括请求修饰符、客户端信息等)和内容实体构成的。

  • 起始行开头的GET表示请求访问服务器的类型, 称为方法(method) 。
  • 随后的字符串 /index.htm 指明了请求访问的资源对象,也叫做请求 URI(request-URI) 。
  • 最后的 HTTP/1.1, 即 HTTP 的版本号, 用来提示客户端使用的 HTTP 协议功能。

响应

服务器接到客户端的请求后,向客户端发送相应的响应信息

响应报文基本上由 协议版本、状态码(表示请求成功或失败的数字代码) 、用以解释状态码的原因短语、可选的响应首部字段(MIME 信息,包括服务器信息)以及实体主体构成。

  • HTTP/1.1 表示服务器对应的 HTTP 版本。
  • 200 OK 表示请求的处理结果的状态码(status code) 和原因短语(reason-phrase) 。 下一行显示了创建响应的日期时间, 是首部字段(header field) 内的一个属性。
  • 接着以一空行分隔, 之后的内容称为资源实体的主体(entitybody) 。

无状态特性

HTTP 协议中,每当有新的请求发送时,就会有对应的新响应产生。协议本身不保留之前的一切请求和响应的报文的信息,这是为了更快地处理大量的事务,确保协议的可伸缩性,而特意把 HTTP 协议设计成如此简单的。

但是随着 Web 的不断发展,这种无状态的特性带来了许多问题。比如用户在一家网站上不同的页面跳转,但是要时刻保持记录用户的登录状态,网站为了能够掌握是谁发送出了请求,就需要保存用户的状态。

HTTP/1.1 虽然是无状态协议, 但为了实现期望的保持状态功能, 于是引入了 Cookie 技术。 有了 Cookie 再用 HTTP 协议通信, 就可以管理状态了。

内部过程

(1)建立连接:连接的建立是通过申请套接字(Socket)实现的。客户端打开一个套接字并把它绑定在一个端口上,如果成功,就相当于建立了一个虚拟文件。

(2)发送请求信息:打开一个连接后,客户端把请求消息发送到服务器的停留端口上。 常用的请求方法有 GET、HEAD 和 POST。

(3)发送响应信息:服务器在处理完客户的请求之后,向客户端响应。

(4)关闭连接:客户端与服务器双方都可以通过关闭套接字来结束 TCP/IP 对话。

向服务器发出请求的方法

GET:获取资源

GET 方法用来请求访问已被 URI 识别的资源。 指定的资源经服务器端解析后返回响应内容。 也就是说, 如果请求的资源是文本, 那就保持原样返回; 如果是像 CGI(Common Gateway Interface, 通用网关接口) 那样的程序, 则返回经过执行后的输出结果。

HEAD: 获得报文首部

HEAD 方法和 GET 方法一样, 只是不返回报文主体部分。 用于确认URI 的有效性及资源更新的日期时间等

POST: 传输实体主体

用于传输信息给服务器,用 GET 方法也可以传输实体的主体, 但一般不用 GET 方法进行传输, 目前几乎所有的提交操作都是靠 POST 完成。

简述HTTP中GET和POST的区别 —— 见笔记

PUT: 传输文件

PUT 方法用来传输文件给服务器。 就像 FTP 协议的文件上传一样, 要求在请求报文的主体中包含文件内容, 然后保存到请求 URI 指定的位置。鉴于 HTTP/1.1 的 PUT 方法自身不带验证机制, 任何人都可以上传文件 , 存在安全性问题, 因此一般的 Web 网站不使用该方法。

DELETE: 删除文件

DELETE 方法请求删除服务器上的文件, 是与 PUT 相

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值