HTTP协议
1.HTTP协议介绍
HTTP请求方法
HTTP1.0定义了三种请求方法:GET,POST和HEAD方法。 HTTP1.1新增了五种请求方法:OPTIONS,PUT,PATCH,DELETE,TRACE和CONNECT方法。
方法 | 描述 |
---|
GET | 请求指定的页面信息,并返回实体主体 | HEAD | 类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头 | POST | 向指定资源提交数据进行处理请求(例如提交表单或上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改 | PUT | 从客户端向服务器传送的数据取代指定的文档的内容 | DELETE | 请求服务器删除指定的页面 | CONNECT | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器 | OPTIONS | 允许客户端查看服务器的性能 | TRACE | 回显服务器收到请求,主要用于测试或诊断 | PATCH | 是对PUT方法的补充,用来对已知资源进行局部更新 |
HTTP请求由三部分组成,分别是:请求行、消息报头、请求正文。
请求行以一个方法符号开头,以空格分开,后面跟着请求的URL和协议的版本。 格式如下:Method Request-URI HTTP-Version CRLF 其中 Method表示请求方法; Request-URI是一个统一资源标识符; HTTP-Version表示请求的HTTP协议版本; CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。
Cookie通过在客户端记录信息确定用户身份。 Keep-alive:在一次TCP连接中可以持续发送多份数据而不会断开连接,早期HTTP一个请求发起一次TCP连接。 请求行以一个方法符号开头,以空格分开,后面跟着请求的URL和协议的版本。 >>HTTP请求正文 只有在发送POST请求时才会有请求正文,GET方法并没有请求正文。
请求
GET / HTTP/1.0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)
Accept: */*
服务器响应
HTTP/1.0 200 OK
Content-Type: text/plain
Content-Length: 137582
Expires: Thu, 05 Dec 1997 16:00:00 GMT
Last-Modified: Wed, 5 August 1996 15:55:28 GMT
Server: Apache 0.84
Content-Type 字段 关于字符的编码,1.0版规定,头信息必须是 ASCII 码,后面的数据可以是任何格式。因此,服务器回应的时候,必须告诉客户端,数据是什么格式,这就是Content-Type字段的作用。 下面是一些常见的Content-Type字段的值。
text/plain
text/html
text/css
image/jpeg
image/png
image/svg+xml
audio/mp4
video/mp4
application/javascript
application/pdf
application/zip
application/atom+xml
这些数据类型总称为MIME type,每个值包括一级类型和二级类型,之间用斜杠分隔。 MIME type还可以在尾部使用分号,添加参数。
Content-Type: text/html; charset=utf-8
上面的类型表明,发送的是网页,而且编码是UTF-8。 客户端请求的时候,可以使用Accept字段声明自己可以接受哪些数据格式。
Accept: */*
上面代码中,客户端声明自己可以接受任何格式的数据。
Content-Encoding 字段 由于发送的数据可以是任何格式,因此可以把数据压缩后再发送。Content-Encoding字段说明数据的压缩方法。
Content-Encoding: gzip
Content-Encoding: compress
Content-Encoding: deflate
客户端在请求时,用Accept-Encoding字段说明自己可以接受哪些压缩方法。
Accept-Encoding: gzip, deflate
2.HTTP状态码
HTTP状态码的作用是:Web服务器用来告诉客户端,发生了什么事。 HTTP状态码被分为五大类,目前我们使用的HTTP协议版本是1.1,支持以下的状态码。
状态码 | 已定义范围 | 分类 |
---|
1XX | 100-101 | 信息提示 | 2XX | 200-206 | 请求成功200、201 | 3XX | 300-307 | 请求重定向301 | 4XX | 400-417 | 客户端错误403、404、405 | 5XX | 500-505 | 服务器错误500 |
3.HTTP响应头的含义
Response响应头字段
Data:当前的GMT时间 Access:服务器支持哪些请求方法(如GET、POST等) Server:服务器名字 Content-length:表示内容长度 Content-Type:表示后面的文档属于什么MIME类型 Expires:应该在什么时候认为文档已经过期,从而不再缓存它 Set-Cookie:设置和页面关联的Cookie Location:表示客户应当到哪里去提取文档
4.HTTP中的URL
URL,全称是Uniform Resoure Locatoor,翻译过来是“统一资源定位符”
>URL包含:
>协议
>用户名:密码
>主机 - 子域名.域名.顶级域名(或IP)
>端口号
>目录/文件名.文件后缀
>参数=值标志
>锚部分
>格式 协议://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件名.文件后缀?参数=值#锚部分
URL编码格式 只有字母和数字[0-9a-zA-Z]、一些特殊符号“$-_.+!*’(),”[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。 同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。 所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个 ip 地址,也非同源。如果缺少了同源策略,浏览器很容易受到 XSS、 CSFR 等攻击。 URL格式中,协议,主机,端口三部分相同,才能算是同源。以下是跨源访问方式。
Jsonp(GET请求)
Websocket
CROS(“跨域资源共享”(Cross-origin resource sharing)),允许发送任何请求
|