HTTP协议
简介
HTTP(HyperText Transfer Protocol)叫超文本传输协议,Web服务器和客户端直接进行数据传输的规则,是一个无状态的应用层协议
HTTPS(HyperText Transfer Protocol over SecureSocket Layer),以安全为目标的http通道,在http的基础上通过传输加密和身份认证保证了传输过程的安全性
工作原理
访问https://www.baidu.com/index.html后,浏览器和Web服务器执行以下动作:
浏览器分析超链接中的URL
浏览器向DNS请求解析www.baidu.com的IP地址
DNS将解析出的IP地址220.181.38.148返回浏览器
浏览器与服务器建立TCP连接(443端口)
浏览器请求文档:GET /index.html
服务器给出响应,将文档index.html发送给浏览器
释放TCP连接
浏览器显示index.html中的内容
持久性连接与非持久性连接
非持久性连接
即浏览器每请求一个Web文档,就创建一个新的连接,当文档传输完毕后,连接就立刻被释放。
- HTTP 0.9、HTTP 1.0 采用此连接方式
持久性连接
一个连接中,可以进行多次文档的请求和响应。服务器在发送完响应后,并不立即释放连接,浏览器可以使用该连接继续请求其他文档。连接保持的时间可以由双方进行协商。
HTTP报文结构
请求报文
响应报文
HTTP请求方法
- GET:请求指定的页面信息,并返回实体主体
- POST:向指定资源提交数据进行处理请求(提交表单或上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源建立或已有资源的修改
- HEAD:与GET几乎一样,只是响应包中没有响应体,只有响应消息头中的元信息。
- PUT:向指定资源位置上传其最新内容
- DELETE:请求服务器删除Request-URI所标识的资源
- OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向Web服务器发送
*
的请求来测试服务器的功能性 - TRACE:回显服务器收到的请求,主要用于测试或诊断
- CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
状态码
状态码 | 响应类别 | 含义 |
---|---|---|
1xx | 信息状态码 | 服务器正在处理请求 |
2xx | 成功状态码 | 请求已正常处理完毕 |
3xx | 重定向状态码 | 需要进行额外操作完成请求 |
4xx | 客户端错误状态码 | 客户端原因导致服务器无法处理请求 |
5xx | 服务器错误状态码 | 服务器原因导致处理请求出错 |
状态码 | 含义 | 状态码 | 含义 |
---|---|---|---|
200 | 表示请求被服务器正常处理(最常见) | 307 | 临时重定向,POST不会变成GET |
204 | 表示请求已成功处理,但是没有内容返回 | 400 | 请求报文语法错误或参数错误 |
206 | 表示服务器已经完成了部分GET请求 | 401 | 需要通过HTTP认证,或认证失败,未授权访问居多 |
301 | 永久重定向,资源已永久分配新URL | 403 | 请求资源被拒绝 |
302 | 临时重定向,资源已临时分配新URL | 404 | 无法找到请求资源 |
303 | 临时重定向,期望使用GET定向获取 | 500 | 服务器故障或Web应用故障 |
304 | 发送的附带条件请求未满足 | 503 | 服务器超负荷或停机维护 |
HTTP头部
请求头键值
头(Header) | 说明 |
---|---|
User-Agent | 关于浏览器和它平台的信息,如Mozilla4.0 |
Accept | 客户能处理的页面的类型,如text/html |
Accept-Charset | 客户可以接受的字符集,如Unicode-1-1, UTF-8 |
Accept-Encoding | 客户能处理的页面编码方法,如gzip |
Accept-Language | 客户能处理的自然语言,如en(英语),zh-cn(简体中文) |
Host | 服务器的DNS名称。从URL中提取出来,必需 |
Referer | 用户从该URL代表的页面出发访问当前请求的页面 |
Cookie | 将以前设置的Cookie送回服务器,可用来作为会话信息 |
Date | 消息被发送时的日期和时间 |
响应头键值
头(header) | 说明 |
---|---|
Date | 消息被发送时的日期和时间 |
Server | 关于服务器的信息 |
Content-Encoding | 内容是如何被编码的(如gzip) |
Content-Language | 页面所使用的自然语言 |
Content-Length | 以字节计算的页面长度 |
Content-Type | 页面的MIME类型 |
Last-Modified | 页面最后被修改的时间和日期,在页面缓存机制中意义重大 |
Location | 指示客户将请求发送给别处,即重定向到另一个URL |
Set-Cookie | 服务器希望客户保存一个Cookie |
URL
简介
全称:Uniform Resource Location,统一资源定位符。从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL
格式
协议://用户名:密码@子域名.域名.顶级域名:端口/目录/文件名.文件后缀?参数=值#标志
相对URL:/目录/文件名.文件后缀?参数=值#标志
例子:http://www.xxx.com:80/test/index.html?boardID=5&ID=23445&page=1#name
URL常见协议
http——超文本传输协议
https——用安全套接字层传送的超文本传输协议
ftp——文件传输协议
mailto——电子邮件地址
ldap——轻型目录访问协议搜索
file——当地电脑活网上分享的文件
news——Usenet新闻组
gopher——Gopher协议
telnet——Telnet协议
URL编码
- 只能使用ASCII字符集来通过因特网进行发送
- URL编码使用
%
其后跟随两位的十六进制数来替换非ASCII自负 - URL不能包含空格。URL编码通常使用+来替换空格
- 只有字母和数字[0-9a-zA-Z]、一些特殊符号
$-_.+!*'(),
[不包含双引号]、以及某些保留字,才可以不经过编码直接用于URL
同源策略
简介
同源策略(SOP)
域名,协议,端口号三者相同
同源策略是浏览器的行为,是为了保护本地的策略不被JS代码获取回来的数据污染。
作用
如果没有同源设计策略,在A网站加载过的js脚本,就能够在没有加载过这个脚本B上的页面随意执行并被读取,这就可能造成页面混乱、被破坏以及数据窃取等不安全的行为