有关Http的介绍
Http
http使用一种基于消息的模型。该协议基本不需要连接,虽然它使用有状态的TCP协议作为它的传输机制,但每次请求和响应都自动完成,并可能使用不同的TCP连接。
HTTP请求
例子:
GET http://e.firefoxchina.cn/js/mozMainScript-min.js?v=20180622v1 HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Referer: http://e.firefoxchina.cn/
Cookie: uid=38oGHFssb2k7Y4iqsUSiAg==
Connection: keep-alive
Host: e.firefoxchina.cn
每个http请求的第一行都由三个以空格间隔的项目组成。
一个说明http请求的方法的动词 所请求的url 使用的http版本
HTTP响应
例子:
HTTP/1.1 200 OK
Date: Wed, 18 Jul 2018 03:55:56 GMT
Expires: Thu, 13 Jul 2028 00:29:06 GMT
Server: nginx
Content-Type: application/x-javascript; charset=utf-8
Content-Length: 16746
Last-Modified: Fri, 29 Jun 2018 10:04:36 GMT
ETag: "5b360434-416a"
Cache-Control: max-age=315360000
Accept-Ranges: bytes
X-Via: 1.1 PSsxllwt4au29:3 (Cdn Cache Server V2.0), 1.1 xawt147:0 (Cdn Cache Server V2.0)
Connection: keep-alive
X-Dscp-Value: 0
每个响应的第一行由三个以空格间隔的项目组成:
使用的http版本 表示请求结果的数字码 一段文本表示的“原因短语”
HTTP方法
最常用的的两个方法:
GET:用于获取资源。它可以用URL查询字符串的形式向所请求的资源发送参数。
POST:主要作用是执行操作。
其他方法:
HEAD:功能与GET相似,不同在于服务器不会在其相应中返回消息主体,消息头与对应的GET请求相同。用于检查某一资源在GET请求前是否存在。
TRACE:用于诊断。服务器在返回主体中包含其请求主体中的内容。用于检测Client和SERVER之间是否存在代理。
OPTIONS:要求服务器报告对某一特殊资源的请求方法。服务器在响应中在Allow字段中列出。
PUT:这个方法试图使用请求主体中的内容向服务器上传资源。
URL
统一资源定位符,是Web资源的唯一标识符,通过它可以获取指定资源。标准格式:
protocol://hostname[:port]/[path/]file[?param=value]
REST
表述性状态转移(REST)是分布式系统的一种系统架构,在这类系统架构中,请求和响应包含系统资源当前状态的描述。
REST风格的URL指:在URL文件路径而不是查询字符串中。例如:包含查询字符串的URL:
http://www.aaa.com/search/?make=a&model=b
与下面这个REST风格的URL相对应:
http://www.aaa.com/search/a/b
HTTP方法
COOKIE
服务器使用cookie机制向客户端发送数据,客户端保存cookie并将其返回给服务器。服务器使用Set-Cookie响应消息头发布cookie;客户端自动将下面的消息加到随后返回给同一个服务器的请求中。cookie一般由一个名-值对构成,但也可以包括任何不叫空格的字符串。
Set-Cookie还可以包括以下属性,用它们控制浏览器处理cookie的形式。
状态码
分为以下5类:
1XX:提供信息
2XX:请求被成功提交
3XX:客户端被重定向到其他资源
4XX:请求包含某种错误
5XX:服务器执行请求时遇到错误
HTTP身份验证
HTTP有自己的用户身份验证方案:
Basic:它在请求消息头中随每条消息以Base64编码字符串的形式发送用户证书。
NTML:一种挑战-相应机制
Digest:一种挑战-相应机制。同用户证书一起使用一个MD5校验和。