04-网络理论
# 1. 客户端和服务器
客户端: Client 客户所使用的电脑中安装的应用程序。 服务端: Server 存放网页,客户端程序,数据处理程序,数据库的电脑。
客户端(网页浏览器、网络爬虫或者其它的工具)作用
- 发起一个HTTP请求到服务器上指定端口(默认端口为80)
- 我们称这个客户端为用户代理程序(user agent)
服务端作用
- 响应的服务器上存储着一些资源,比如HTML文件和图像
- 我们称这个响应服务器为源服务器(origin server)
# 2. 一切要从URI说起
URI
- Uniform Resource Identifier 统一资源标识符,用来唯一标识一个资源
URL
- Uniform Resource Locator 统一资源定位符,用来唯一标识一个资源
- URL也可以用来标识一个资源,而且它还可以指明如何定位资源
URN
- Uniform Resource Name 统一资源命名 通过名字表示资源
URL肯定是一个URI,URI并不一定是URL,也有可能是URN,URL与URN是URI的子集
- 你要找WC这个人,WC就是一个URI,URI没有寻找资源的方式
- 家庭住址 => URL 定位
- 姓名+身份证号 => URN
对于我们来说,最重要的是URL,它的作用
- 资源标识
- 有定位资源的功能
- 指明了获取资源所采用的协议
URL格式
- 协议名称 + 主机名称 + 端口号 + 路径 + 文件 + 查询所需的字符串 + HASH
- http:// baidu.com :80 /01/index.html ?a=1&b=2 #abc
- scheme:// host port path filename ?query hash
# 3. BS架构和CS架构
BS架构
- Browser/Server(浏览器/服务器), 利用浏览器去呈现界面,浏览器提供浏览器所需要的数据
- 优点:无需安装客户端软件,只需要有浏览器,无需升级客户端。
- 缺点:浏览器的兼容性可能有问题,功能性相对弱一点,安全性弱,交互性弱。
CS架构
- Client/Server 将应用程序放到一个软件中,可以是Android也可以是iOS,服务器给客户端软件提供它需要的数据。
- 优点:界面丰富,交互性强,响应速度快,安全性强。
- 缺点:开发成本高,需要下载安装,维护成本高,升级麻烦。
# 4. 购买云服务器和域名
服务器分类
- 实体服务器:自己购买服务器。
- 云服务器:阿里云,华为云,JD云....
域名分类
- 通用类
- .com 工商金融企业
- .com.cn 公司
- .gov 政府
- .net 提供互联网网络服务机构
- .org 各类组织机构
- .edu 教育机制
- 国家地区分类
- .cn 中国
- .ca 加拿大
- .uk 英国
- .jp 日本
- 域名级别
- 顶级域名(一级域名) baiu.com 一般我们买的是一级域名,在一级域名下可以配 置N个二级域名
- 二级域名 zhidao.baidu.com image.baidu.com wenku.baidu.com tieba.baidu.com
- 三级域名 sport.news.baidu.com
- www.baidu.com 也是所谓的二级域名
www: world Wide Web 万维网
- Internet,叫因特网。这个因特网中提供非常多的服务,如www网页服务,ftp文件传输服务,E-mail电子邮件服务,Telnet远程登录服务...,www是浏览器访问网页的服务,所以说,很早之前,所有的网站主页域名前面都会加上www。后来,可以配置二域名和三级域名,不同的域名,就可以对应不同的业务,而业务处理任务会分配到不同的服务器,所以,不再需要使用www来标注主页了。但是加上www,已经成为一种习惯了,所以现在,很多网站都还会做DNS解析www,说到底还是尊重用户习惯。国外的网站基本上都不会使用www。
# 5. DNS解析
DNS:Domain Name Server(域名服务器)
- 作用:域名与对应的IP转化的服务器
- DNS中保存了一张域名与对应的IP地址的表,一个域名对应一个IP地址,一个IP地址可以对应多个域名
- 说白了,根据域名,通过DNS解析就可以得到一个IP 地址。就可以找到对应的服务器
# 6. IP地址和端口号
IP:Internet Protocol Address 互联网协议地址 IP地址
- 作用:分配给用户上网使用的互联网协议
- 分类:IPv4 IPv6
根据IP地址,就可以找到对应的服务器,服务器上可以提供N种服务器,你需要哪种服务呢?就需要根据端口号,来区分你需要哪种服务。
- 端口号范围:0~65535 0~1024是系统使用的 1025~65535之间
- 知名端口号:http协议下:80 https协议下:443 mysql: 3306 FTP协议下:20 21...
# 7. TCP连接
TCP:transmission Control Protocol 传输控制协议
- 特点:在收发数据之前,必须建立可靠的连接。TCP就是可靠连接。UDP不可靠连接。
- 建立连接基础:三次握手
- 应用场景:HTTP请求(HTTP请求就是基于TCP的),FTP文件传输,邮件发送
- 优点:速度慢,稳定,重传机制
- 缺点:效率低,占用资源,容易被攻击
TCP 三次握手理解 (双方确认)(非常重要,面试必问)
- TCP是一个端到端的 可靠 面相连接的协议
- HTTP基于传输层TCP协议不用担心数据传输的各种问题(当发生错误时,可以重传)
- 根据IP,找到对应的服务器,发起TCP的三次握手
为什么要3次握手:
我们假定第一次发送的请求, 因为网络延迟很慢才到达服务端,然后客户端以为这服务器居然不理睬我, 然后
默默的关闭的等待连接的请求,走开了(好比追女神);但事实呢?女神(服务器)是因为各种各样的原因,很
晚才看到,然后说我接受你了, 同意你的要求咱们两结婚吧!但是,A早已经远走高飞,这个请求A完全不会收到
(在第二次握手,服务端打开连接,等待客户端的响应),那么女生呢,以为对方收到了,就会一直等待,这样
B的资源就会被浪费的(创建连接的时候,空间浪费以及端口消耗);而三次握手, 就不会发生,服务端同意连
接了,但是A缺一直没有下一步的动作,导致资源浪费;
2
3
4
5
6
7
8
关闭TCP连接四次挥手的理解 (客气挽留)
- 不能直接一次性断开连接(双方知晓), 万一还有什么数据没有传完, 造成数据的丢失!
为什么要4次挥手:
这和有礼貌的好友道别一样:(a:客户端 b:服务端) 1、一开始A想要回家离开,但是呢?怕B还有事情要交代,
那么呢?只好先向B打招呼,我要走了,请求停止交谈(请求断开连接),(此时,a到B的连接没有断开,依旧可以
进行通信); 2、同意A的请求,说好的,但是我这里可能还有一些话(数据)没说完。我检查看看, 你等等,
等我说完你再走。 3、B确实没啥要补充的了,就告知你我可以撤了 4、A说好的,知道了,88;(B得知A走开了,
关闭了自己的连接 )
2
3
4
5
6
7
总结三次握手和四次挥手
建立连接 => 三次握手 (双方确认)
(1) 服务器啊, 我是浏览器, 我要和你建立连接
(2) 服务器看到了, 好的, 那么建立连接吧, 我准备好了, 你确定吗?
(3) 浏览器: 是的, 我确定!
连接就建立成功,三次握手 = 连接的发起 + 双方的确认
断开连接 => 四次挥手 (客气挽留)
(1) 一方A发起断开连接的消息
(2) 另一方B会确认收到断开的需求, 但是会要求等一等, 确认是否数据传输完毕
(3) B当确认完之后, 确实数据都传完了, 告知A, 连接可以断开了
(4) A确认收到消息, 告知B, 我要走了
2
3
4
5
6
7
8
9
10
11
# 8. HTTP的概念(掌握)
HTTP:HyperText Transfer Protocol 超文本传输协议:
- 客户端和与服务器之间传递数据的规范
- HTTP请求:按照HTTP协议(规则),由客户端(浏览器)向服务器发出请求
- HTTP响应:按照HTTP协议(规则),由服务器给出响应
HTTPS: HyperText Transfer Protocol Secure 超文本传输安全协议。
- HTTP的安全版本(安全的基础是SSL/TLS)
- SSL: Secure Sockets Layer 安全套接层
- TLS:transport Layer Security 传输层安全
- 说白了,就是为了网络通信提供的一种安全协议,对网络连接进行加密
HTTP和HTTPS的区别
- HTTP是不安全 HTTPS可以防止攻击
- HTTP协议传输的内容是明文,直接在TCP连接上传递,客户端和服务器都无法验证对方的身份
- HTTPS协议的传输内容都是被SSL/TLS加密,且运行在SSL/TLS,SSL/TLS运行在TCP连接上,所以传递的数据是安全
# 9. HTTP报文(背会)
HTTP是基于TCP通信协议来传递数据。通过一个可靠的连接来交换信息。在交换信息之前,客户端和服务器之间需要有规则。
HTTP通信包含两部分
- HTTP请求 Request
- HTTP响应 Response
在HTTP请求和HTTP响应中,都包含了HTTP报文,报文也是一块数据,在客户端与服务器之间发送的数据块。这些报文也是在客户端与服务器之间流行。所以HTTP报文也叫报文流。
HTTP请求报文组成部分
- 对报文进行描述的起始行
- HTTP各种头(header),也叫http报文头,不同的头含义是不一样的
- 请求体(请求正文)(可选的),就是客户端给服务器的数据
HTTP响应报文组成部分
- 响应行(起始行) HTTP/1.0 200表示状态码 OK叫状态描述符
- 响应头 header
- 响应体 服务器给客户端响应的数据
# 10. HTTP协议版本(掌握)
HTTP/0.9
- 仅支持GET请求
- 仅能请求HTML资源
- 发布于1991年
HTTP/1.0
- 增加了POST请求和HEAD请求
- 支持多种数据格式的请求和访问
- 添加了缓存的功能
- 增加了状态码,内容编码
- 浏览器的每次请求都需要与服务器建立一个TCP连接,请求处理完成后立即断开TCP连接,每次建立连接增加了性能损耗
- 也就是说早期的HTTP1.0是不支持长连接(持久化连接)的,只支持串行连接
- 后期的HTTP1.0添加了Connection:keep-alive字段,开始支持持久化连接
- 发布于1996年
HTTP/1.1(目前使用最广泛的版本)
- 采用持久连接(Connection: keep-alive),多个请求可以共用同一个TCP连接
- 增加PUT/PATC/OPTION/DELETE等请求方式
- 增加了host字段,指定服务器域名
- 增加了100状态码,支持只发送头信息
- 支持内容传递,只传递一部分和文件断点继传
- 发布于1997年;
HTTP/2.0
- 增加了双工模式 客户端同时发送N个请求,服务器同时处理N个请求
- 服务器推送 服务器可以主动推送数据给客户端
- 发布于2015年
# 11. HTTP的请求方式
GET:GET 方法请求一个指定资源的表示形式,使用 GET 的请求应该只被用于获取数据。
HEAD:HEAD 方法请求一个与 GET 请求的响应相同的响应,但没有响应体。比如在准备下载一个文件前,先获取文件的大小,再决定是否进行下载;
POST:POST 方法用于将实体提交到指定的资源。
PUT:PUT 方法用请求有效载荷(payload)替换目标资源的所有当前表示;
DELETE:DELETE 方法删除指定的资源;
PATCH:PATCH 方法用于对资源应部分修改;
CONNECT:CONNECT 方法建立一个到目标资源标识的服务器的隧道,通常用在代理服务器,网页开发很少用到。
TRACE:TRACE 方法沿着到目标资源的路径执行一个消息环回测试。
在开发中使用最多的是GET、POST请求
GET,POST,PUT,DELETE就是CRUD,就是增删改查。
- 说是这么说,4种不同的请求方式只是为了清楚不同的请求目的,但是并不代表用post就一定要修改数据,用get并不一定代码去获取数据。
GET和POST
- GET主要是用来获取数据
- GET也可以传递数据给服务器,通过查询字符串,就是在URL中把数据扔给服务器
- POST可以对数据进行添加,删除,修改,数据是放在FormData
GET和POST区别(面试题)
- post更安全:get请求是把数据放在url,每个人都可以看到,相对来说,不安全。
- get请求,数据放在url,url的长度是有限,get请求传递给服务器的数据大小是有限的
- post请求,传递给服务器的数据理论上来说是无限的
- get请求只能发送ASCII字符数据,post请求能发送更多的数据类型
- post比get速度慢,post接收数据之前会先将请求头发送给服务器确认,然后发送数据
- get请求会进行数据缓存,post没有
GET过程
- 第三次握手,浏览器确认并发送请求头和数据
- 服务器返回200 OK响应
POST过程
- 第三次握手,浏览器确认并发送post请求头
- 服务器返回状态码100后,continue响应
- 浏览器开始扔数据到服务器
- 服务器返回200 OK响应
# 12. Request Header
在request对象的header中也包含很多有用的信息,客户端会默认传递过来一些信息
content-type是这次请求携带的数据的类型
- application/x-www-form-urlencoded:表示数据被编码成以 '&' 分隔的键 - 值对,同时以 '=' 分隔键和值
- application/json:表示是一个json类型;
- text/plain:表示是文本类型;
- application/xml:表示是xml类型;
- multipart/form-data:表示是上传文件;
content-length
- 文件的大小长度
keep-alive
- http是基于TCP协议的,但是通常在进行一次请求和响应结束后会立刻中断
- 在http1.0中,如果想要继续保持连接
- 浏览器需要在请求头中添加 connection: keep-alive
- 服务器需要在响应头中添加 connection:keey-alive
- 当客户端再次放请求时,就会使用同一个连接,直接一方中断连接
- 在http1.1中,所有连接默认是 connection: keep-alive的
- 不同的Web服务器会有不同的保持 keep-alive的时间
- Node中默认是5s中
accept-encoding
- 告知服务器,客户端支持的文件压缩格式,比如js文件可以使用gzip编码,对应 .gz文件
accept
- 告知服务器,客户端可接受文件的格式类型
user-agent
- 客户端相关的信息
HTTP Request Header 请求头
Header | 解释 | 示例 |
---|---|---|
Accept | 指定客户端能够接收的内容类型 | Accept: text/plain, text/html |
Accept-Charset | 浏览器可以接受的字符编码集。 | Accept-Charset: iso-8859-5 |
Accept-Encoding | 指定浏览器可以支持的 web 服务器返回内容压缩编码类型。 | Accept-Encoding: compress, gzip |
Accept-Language | 浏览器可接受的语言 | Accept-Language: en, zh |
Accept-Ranges | 可以请求网页实体的一个或者多个子范围字段 | Accept-Ranges: bytes |
Authorization | HTTP 授权的授权证书 | Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
Cache-Control | 指定请求和响应遵循的缓存机制 | Cache-Control: no-cache |
Connection | 表示是否需要持久连接。(HTTP 1.1 默认进行持久连接) | Connection: close |
Cookie | HTTP 请求发送时,会把保存在该请求域名下的所有 cookie 值一起发送给 web 服务器。 | Cookie: $Version=1; Skin=new; |
Content-Length | 请求的内容长度 | Content-Length: 348 |
Content-Type | 请求的与实体对应的 MIME 信息 | Content-Type: application/x-www-form-urlencoded |
Date | 请求发送的日期和时间 | Date: Tue, 15 Nov 2010 08:12:31 GMT |
Expect | 请求的特定的服务器行为 | Expect: 100-continue |
From | 发出请求的用户的 Email | From: user@email.com |
Host | 指定请求的服务器的域名和端口号 | Host: www.zcmhi.com (opens new window) |
If-Match | 只有请求内容与实体相匹配才有效 | If-Match: “737060cd8c284d8af7ad3082f209582d” |
If-Modified-Since | 如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回 304 代码 | If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT |
If-None-Match | 如果内容未改变返回 304 代码,参数为服务器先前发送的 Etag,与服务器回应的 Etag 比较判断是否改变 | If-None-Match: “737060cd8c284d8af7ad3082f209582d” |
If-Range | 如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。参数也为 Etag | If-Range: “737060cd8c284d8af7ad3082f209582d” |
If-Unmodified-Since | 只在实体在指定时间之后未被修改才请求成功 | If-Unmodified-Since: Sat, 29 Oct 2010 19:43:31 GMT |
# 13. Response Header
响应的header中包括一些服务器给客户端的信息
HTTP Responses Header 响应头
Header | 解释 | 示例 |
---|---|---|
Max-Forwards | 限制信息通过代理和网关传送的时间 | Max-Forwards: 10 |
Pragma | 用来包含实现特定的指令 | Pragma: no-cache |
Proxy-Authorization | 连接到代理的授权证书 | Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
Range | 只请求实体的一部分,指定范围 | Range: bytes=500-999 |
Referer | 先前网页的地址,当前请求网页紧随其后, 即来路 | Referer: http://www.zcmhi.com/archives/71.html (opens new window) |
TE | 客户端愿意接受的传输编码,并通知服务器接受接受尾加头信息 | TE: trailers, deflate; q=0.5 |
Upgrade | 向服务器指定某种传输协议以便服务器进行转换(如果支持) | Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 |
User-Agent | User-Agent 的内容包含发出请求的用户信息 | User-Agent: Mozilla/5.0 (Linux; X11) |
Via | 通知中间网关或代理服务器地址,通信协议 | Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1) |
Warning | 关于消息实体的警告信息 | Warn: 199 Miscellaneous warning |
Header | 解释 | 示例 |
Accept-Ranges | 表明服务器是否支持指定范围请求及哪种类型的分段请求 | Accept-Ranges: bytes |
Age | 从原始服务器到代理缓存形成的估算时间(以秒计,非负) | Age: 12 |
Allow | 对某网络资源的有效的请求行为,不允许则返回 405 | Allow: GET, HEAD |
Cache-Control | 告诉所有的缓存机制是否可以缓存及哪种类型 | Cache-Control: no-cache |
Content-Encoding | web 服务器支持的返回内容压缩编码类型。 | Content-Encoding: gzip |
Content-Language | 响应体的语言 | Content-Language: en, zh |
Content-Length | 响应体的长度 | Content-Length: 348 |
Header | 解释 | 示例 |
Content-Location | 请求资源可替代的备用的另一地址 | Content-Location: /index.htm |
Content-MD5 | 返回资源的 MD5 校验值 | Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ== |
Content-Range | 在整个返回体中本部分的字节位置 | Content-Range: bytes 21010-47021/47022 |
Content-Type | 返回内容的 MIME 类型 | Content-Type: text/html; charset=utf-8 |
Date | 原始服务器消息发出的时间 | Date: Tue, 15 Nov 2010 08:12:31 GMT |
ETag | 请求变量的实体标签的当前值 | ETag: “737060cd8c284d8af7ad3082f209582d” |
Expires | 响应过期的日期和时间 | Expires: Thu, 01 Dec 2010 16:00:00 GMT |
Last-Modified | 请求资源的最后修改时间 | Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT |
Location | 用来重定向接收方到非请求 URL 的位置来完成请求或标识新的资源 | Location: http://www.zcmhi.com/archives/94.html (opens new window) |
Pragma | 包括实现特定的指令,它可应用到响应链上的任何接收方 | Pragma: no-cache |
Proxy-Authenticate | 它指出认证方案和可应用到代理的该 URL 上的参数 | Proxy-Authenticate: Basic |
refresh | 应用于重定向或一个新的资源被创造,在 5 秒之后重定向(由网景提出,被大部分浏览器支持) | Refresh: 5; url= http://www.zcmhi.com/archives/94.html (opens new window) |
Retry-After | 如果实体暂时不可取,通知客户端在指定时间之后再次尝试 | Retry-After: 120 |
Server | web 服务器软件名称 | Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) |
Set-Cookie | 设置 Http Cookie | Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1 |
Trailer | 指出头域在分块传输编码的尾部存在 | Trailer: Max-Forwards |
Transfer-Encoding | 文件传输编码 | Transfer-Encoding:chunked |
Vary | 告诉下游代理是使用缓存响应还是从原始服务器请求 | Vary: * |
Via | 告知代理客户端响应是通过哪里发送的 | Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1) |
Warning | 警告实体可能存在的问题 | Warning: 199 Miscellaneous warning |
Header | 解释 | 示例 |
WWW-Authenticate | 表明客户端请求实体应该使用的授权方案 | WWW-Authenticate: Basic |
# 14. Response响应状态码
- Http状态码(Http Status Code)是用来表示Http响应状态的数字代码
- Http状态码非常多,可以根据不同的情况,给客户端返回不同的状态码
- MDN响应码解析地址:https://developer.mozilla.org/zh-CN/docs/web/http/status
HTTP状态码列表:
状态码 | 状态码英文名称 | 中文描述 |
---|---|---|
100 | Continue | 继续。客户端 (opens new window)应继续其请求 |
101 | Switching Protocols | 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议 |
200 | OK | 请求成功。一般用于GET与POST请求 |
201 | Created | 已创建。成功请求并创建了新的资源 |
202 | Accepted | 已接受。已经接受请求,但未处理完成 |
203 | Non-Authoritative Information | 非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本 |
204 | No Content | 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档 |
205 | Reset Content | 重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域 |
206 | Partial Content | 部分内容。服务器成功处理了部分GET请求 |
300 | Multiple Choices | 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择 |
301 | Moved Permanently | 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替 |
302 | Found | 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI |
303 | See Other | 查看其它地址。与301类似。使用GET和POST请求查看 |
304 | Not Modified | 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源 |
305 | Use Proxy | 使用代理。所请求的资源必须通过代理访问 |
306 | Unused | 已经被废弃的HTTP状态码 |
307 | Temporary Redirect | 临时重定向。与302类似。使用GET请求重定向 |
400 | Bad Request | 客户端请求的语法错误,服务器无法理解 |
401 | Unauthorized | 请求要求用户的身份认证 |
402 | Payment Required | 保留,将来使用 |
403 | Forbidden | 服务器理解请求客户端的请求,但是拒绝执行此请求 |
404 | Not Found | 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面 |
405 | Method Not Allowed | 客户端请求中的方法被禁止 |
406 | Not Acceptable | 服务器无法根据客户端请求的内容特性完成请求 |
407 | Proxy Authentication Required | 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权 |
408 | Request Time-out | 服务器等待客户端发送的请求时间过长,超时 |
409 | Conflict | 服务器完成客户端的PUT请求是可能返回此代码,服务器处理请求时发生了冲突 |
410 | Gone | 客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置 |
411 | Length Required | 服务器无法处理客户端发送的不带Content-Length的请求信息 |
412 | Precondition Failed | 客户端请求信息的先决条件错误 |
413 | Request Entity Too Large | 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息 |
414 | Request-URI Too Large | 请求的URI过长(URI通常为网址),服务器无法处理 |
415 | Unsupported Media Type | 服务器无法处理请求附带的媒体格式 |
416 | Requested range not satisfiable | 客户端请求的范围无效 |
417 | Expectation Failed | 服务器无法满足Expect的请求头信息 |
500 | Internal Server Error | 服务器内部错误,无法完成请求 |
501 | Not Implemented | 服务器不支持请求的功能,无法完成请求 |
502 | Bad Gateway | 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求 |
503 | Service Unavailable | 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中 |
504 | Gateway Time-out | 充当网关或代理的服务器,未及时从远端服务器获取请求 |
505 | HTTP Version not supported | 服务器不支持请求的HTTP协议的版本,无法完成处理 |
# 15. 同源策略(掌握)
同源策略:Same Origin Policy SOP 是浏览器的策略
- 同源策略(Same-Origin Policy)最早由 Netscape 公司提出,是浏览器的一种安全策略
- 规定:只允许两个页面有相同的源时,一个页面才可以去访问另一个页面中的数据。
- 源:说白了,就是指域名 相同的源指的是有相同的域名
- 换句话说,jd.com不能去获取taobao.com下面的数据
有一个这样的域名:http://www.wangcai.com
* http://zhidao.wangcai.com 不同源
* http://www.wangcai.com:8080 不同源
* https://www.wangcai.com 不同源
* http://www.wangcai.com/phone/index.html 同源
* http://www.wangcai.com/phone/huawei/index.html 同源
总结
- 源:协议 + 域名 + 端口
- 同源:相同的协议 && 相同域名 && 相同的端口
- 不同源:不同的协议 || 不同的域名 || 不同的端口
不受同源策略的限制
- 资源的引入 如:img标签的src link标签的href script标签的src
- 页面中的超连接 a标签中的href
- 表单的提交
- 重定向页面