看完让你有一种恍然大悟醍醐灌顶的感觉 http服务器是什么?( 九 )


Server
服务器标头包含有关原始服务器用来处理请求的软件的信息 。
应该避免使用过于冗长和详细的 Server 值,因为它们可能会泄露内部实施细节,这可能会使攻击者容易地发现并利用已知的安全漏洞 。 例如下面这种写法
Server: Apache/2.4.1 (Unix)Set-Cookie
Cookie 又是另外一个领域的内容了,我们后面文章会说道 Cookie,这里需要记住 Cookie、Set-Cookie 和 Content-Disposition 等在其他 RFC 中定义的首部字段,它们不是属于 HTTP 1.1 的首部字段,但是使用率仍然很高 。
Transfer-Encoding
首部字段 Transfer-Encoding 规定了传输报文主体时采用的编码方式 。
Transfer-Encoding: chunkedHTTP /1.1 的传输编码方式仅对分块传输编码有效 。
X-Frame-Options
HTTP 首部字段是可以自行扩展的 。 所以在 Web 服务器和浏览器的应用上,会出现各种非标准的首部字段 。
首部字段 X-Frame-Options 属于 HTTP 响应首部,用于控制网站内容在其他 Web 网站的 Frame 标签内的显示问题 。 其主要目的是为了防止点击劫持(clickjacking)攻击 。
下面是一个响应头的汇总,基于 HTTP 1.1

看完让你有一种恍然大悟醍醐灌顶的感觉 http服务器是什么?

文章插图
非 HTTP/1.1 首部字段在 HTTP 协议通信交互中使用到的首部字段,不限于 RFC2616 中定义的 47 种首部字段 。 还有 Cookie、Set-Cookie 和 Content-Disposition 等在其他 RFC 中定义的首部字段,它们的使用频率也很高 。 这些非正式的首部字段统一归纳在 RFC4229 HTTP Header Field Registrations 中 。
End-to-end 首部和 Hop-by-hop 首部HTTP 首部字段将定义成缓存代理和非缓存代理的行为,分成 2 种类型 。
一种是 End-to-end 首部 和 Hop-by-hop 首部
End-to-end(端到端) 首部这些标头必须发送给消息的最终接收者 : 请求的服务器,或响应的客户端 。 中间代理必须重新传输未经修改的标头,并且缓存必须存储这些信息
Hop-by-hop(逐跳) 首部分在此类别中的首部只对单次转发有效,会因通过缓存或代理而不再转发 。
下面列举了 HTTP/1.1 中的逐跳首部字段 。 除这 8 个首部字段之外,其他所有字段都属于端到端首部 。
Connection、Keep-Alive、Proxy-Authenticate、Proxy-Authorization、Trailer、TE、Transfer-Encoding、Upgrade
HTTP 的优点和缺点HTTP 的优点简单灵活易扩展HTTP 最重要也是最突出的优点是 简单、灵活、易于扩展 。
HTTP 的协议比较简单,它的主要组成就是 header + body,头部信息也是简单的文本格式,而且 HTTP 的请求报文根据英文也能猜出来个大概的意思,降低学习门槛,能够让更多的人研究和开发 HTTP 应用 。
所以,在简单的基础上,HTTP 协议又多了灵活 和 易扩展 的优点 。
HTTP 协议里的请求方法、URI、状态码、原因短语、头字段等每一个核心组成要素都没有被制定死,允许开发者任意定制、扩充或解释,给予了浏览器和服务器最大程度的信任和自由 。
应用广泛、环境成熟因为过于简单,普及,因此应用很广泛 。 因为 HTTP 协议本身不属于一种语言,它并不限定某种编程语言或者操作系统,所以天然具有跨语言、跨平台的优越性 。 而且,因为本身的简单特性很容易实现,所以几乎所有的编程语言都有 HTTP 调用库和外围的开发测试工具 。
随着移动互联网的发展, HTTP 的触角已经延伸到了世界的每一个角落,从简单的 Web 页面到复杂的 JSON、XML 数据,从台式机上的浏览器到手机上的各种 APP、新闻、论坛、购物、手机游戏,你很难找到一个没有使用 HTTP 的地方 。
无状态无状态其实既是优点又是缺点 。 因为服务器没有记忆能力,所以就不需要额外的资源来记录状态信息,不仅实现上会简单一些,而且还能减轻服务器的负担,能够把更多的 CPU 和内存用来对外提供服务 。
HTTP 的缺点无状态既然服务器没有记忆能力,它就无法支持需要连续多个步骤的事务操作 。 每次都得问一遍身份信息,不仅麻烦,而且还增加了不必要的数据传输量 。 由此出现了 Cookie 技术 。
明文HTTP 协议里还有一把优缺点一体的双刃剑,就是明文传输 。 明文意思就是协议里的报文(准确地说是 header 部分)不使用二进制数据,而是用简单可阅读的文本形式 。
对比 TCP、UDP 这样的二进制协议,它的优点显而易见,不需要借助任何外部工具,用浏览器、Wireshark 或者 tcpdump 抓包后,直接用肉眼就可以很容易地查看或者修改,为我们的开发调试工作带来极大的便利 。

推荐阅读