本文目录
1.HTTP请求是按照HTTP格式化的字符序列。HTTP请求的示例如下所示。
3.HTTP中指定了许多不同的HTTP谓词。下表概述了它们的用途。
前言
万维网是由一组相互关联的文档组成的,其中许多文档是超文本标记语言(HTML)文档。web浏览器从服务器请求这些文档,并呈现内容供用户查看。渲染依赖于一组级联样式表(CSS)规则,这些规则通常在单独的CSS文件中提供,但如果未提供样式文件,则将使用浏览器默认值。HTML文档包含网页的内容,CSS文件包含有关如何向用户显示网页的信息。
一、因特网上的通信
通过计算机上的网络连接实现与internet的通信,每次计算机与internet上的另一台计算机通信时,都会建立连接。
主要有两种类型的连接:传输控制协议(TCP)连接和用户数据报协议(UDP)连接。在大多数情况下,在请求浏览器的网页以呈现TCP连接时,都会使用TCP连接。然而TCP并没有指定如何检索网页,它是一个级别低得多的协议,只关心确保数据传输,而把任务留给超文本传输协议(HTTP)。HTTP提供了一组关于客户端应该如何从服务器请求网页的规则,并指示服务器应该如何响应。
二、进一步了解HTTP请求
所有HTTP请求都在客户端和服务器这两方之间。客户端是发起对话的计算机,服务器是为请求提供服务的计算机(对话中可能有中间代理)。根据定义,每个请求都由客户机发起,并通过输入资源的名称开始。资源的名称作为统一资源定位器(URL)提供,其中包含检索文档所需的所有信息。URL本身不足以启动连接,因为网络连接需要Internet协议(IP)地址来创建连接。IP地址类似于internet上特定计算机的电话号码。要从URL获取IP地址,将在域名命名服务(DNS)中查询域名(URL中以句号为标点的部分)。域名命名服务就像互联网的电话簿,允许在给定名称的情况下检索IP地址。域名是IP地址的别名,使用户能够更方便地记住他们感兴趣的资源的地址。一旦找到URL的IP地址,计算机将在建立此连接时协商连接,HTTP请求可以开始。HTTP是一种无状态协议,这意味着它们的请求之间没有内存或状态。
1.HTTP请求是按照HTTP格式化的字符序列。HTTP请求的示例如下所示。
GET /index.html HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.example.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
这个请求包含了一个HTTP动词(GET),请求的资源(/index.html)还有协议版本号(HTTP/1.1)。这个请求剩下的信息不是必须的但是提供了额外的信息给服务器。设请求成功,服务器将使用状态代码和请求的资源进行响应。
2.HTTP请求的响应示例如下所示。
HTTP/1.1 200 OK
Date: Mon, 11 April 2016 22:38:34 GMT
Content-Type: text/html; charset=UTF-8
Content-Encoding: UTF-8
Content-Length: 99
Last-Modified: Mon, 11 April 2016 00:00:00 GMT
Server: Apache/2.4.20 (Unix) (Red-Hat/Linux)
Accept-Ranges: bytes
Connection: close
<html>
<head>
<title>Index</title>
</head>
<body>
Hello World!
</body>
</html>
来自服务器的响应包含一些头信息,后跟请求的内容。请求第一行的数字200是请求的HTTP状态代码。状态代码200表示请求成功。
3.HTTP中指定了许多不同的HTTP谓词。下表概述了它们的用途。
Verb | Action |
---|---|
GET | GET方法意味着检索由请求URI标识的任何信息(以实体的形式)。如果请求URI指的是数据生成过程,则应将生成的数据作为响应中的实体返回,而不是过程的源文本,除非该文本恰好是过程的输出。 |
POST | POST方法用于请求源服务器接受包含在请求中的实体,作为由请求行中的请求URI标识的资源的新从属。POST的设计允许采用统一的方法覆盖以下功能: 1.现有资源的注释 2.在公告栏、新闻组、邮件列表或类似的邮件组中发布消息文章 3.向数据处理程序提供数据块,如提交表单的结果过程 4.通过追加操作扩展数据库。 |
PUT | PUT方法请求将封闭的实体存储在提供的请求URI下。如果请求URI引用的是一个已经存在的资源,则应将包含的实体视为驻留在源服务器上的实体的修改版本。如果请求URI不指向现有资源,并且该URI能够由请求用户代理定义为新资源,则源服务器可以使用该URI创建资源。 |
DELETE | DELETE方法请求源服务器删除由请求URI标识的资源。 |
HEAD | HEAD方法与GET相同,只是服务器不能在响应中返回消息体。 |
TRACE | TRACE方法用于调用请求消息的远程应用层循环。 |
OPTION | OPTIONS方法表示请求获取由请求URI标识的请求/响应链上可用的通信选项的信息。此方法允许客户端确定与资源或服务器功能相关的选项和/或需求,而无需执行资源操作或启动资源检索。 |
CONNECT | 此规范保留方法名CONNECT,以便与可以动态切换为tunnel的代理一起使用。 |
PATCH | PATCH方法请求将请求实体中描述的一组更改应用于由请求URI标识的资源。 |
4.HTTP状态码对于确定请求是否成功很重要。下表总结了HTTP状态代码。
Range | Meaning |
---|---|
1xx | 信息性回应 |
2xx | 成功响应 |
3xx | 重定向响应 |
4xx | 客户端错误响应 |
5xx | 服务器错误响应 |
三、服务器端语言
internet上的某些网页的扩展名不是.html,这些网页通常由服务器端编程语言生成。常见的服务器端编程语言有PHP、Python、ASP.NET和Java。这些网页是在用户请求时生成的(即时),因此可以针对特定用户进行定制。在服务器上,将有一组文件,当发出请求时,这些文件将被执行,并将生成一个HTML文档,然后交付给用户。由于页面是基于每个请求生成的,因此可以插入数据库查询的结果。这个概念是所有网上购物、网上银行和社交媒体网站的基础。
由于使用服务器端编程语言的网站在交付给最终用户之前需要进行处理,因此服务器必须能够并设置为处理正在使用的任何编程语言。在之后,我们将使用一个名为Flask的Python框架(http://flask.pocoo.org/)和内置在该框架中的web服务器。