读《图解HTTP》总结--第十章

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读《图解HTTP》总结--第十章相关的知识,希望对你有一定的参考价值。

构建Web内容的技术

    在Web刚出现时,我们只能浏览那些页面样式简单的内容。如今,Web使用各种各样的技术,来呈现丰富多彩的内容。


10.1  html


10.1.1 页面几乎全由HTML构建

    HTML(HyperText Markup Language,超文本标记语言)是为了发送Web上的超文本而开发的标记语言。超文本是一种文档系统,可将文档中任意位置的信息与其他信息(文本或图片等)建立关联,即超链接文本。标记语言是指通过在文档的某部分穿插特别的字符串标签,用来修饰文档的语言。我们把出现在HTML文档内的这种特殊字符串叫做HTML标签(Tag)。平时我们浏览的Web页面几乎全都是使用HTML写成的。由HTML构成的文档经过浏览器的解析、渲染后,呈现出来的结果就是Web页面。以下就是用HTML编写的文档的例子。而这份HTML文档内这种被<>包围着的文字就是标签。在标签的作用下,文档会改变样式,或插入图片、链接。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
<!--
.logo {
	padding: 20px;
	text-align: center;
}
-->
</style>
<title>hackr.jp</title>
</head>

<body>
<div class="logo">
  <p><img src="photo.jpg" alt="photo" width="240" height="127" /></p>
  <p><img src="hackr.gif" alt="hackr.jp" width="240" height="84" /></p>
  <p><a href="http://hackr.jp/">hackr.jp</a> </p>
</div>
</body>
</html>



10.1.2  HTML版本

    Tim Berners提出HTTP概念的同时,还提出HTML原型。1993年在伊利诺伊大学的NCSA发布了Mosaic浏览器(世界首个图形界面浏览器程序),而能够被Mosaic解析的HTML,统一标准后即作为HTML1.0发布。目前的最新版本是HTML4.01标准,1999年12月的W3C组织推荐使用这一版本。下一个版本预计会在2014年左右正式推荐使用HTML5标准。HTML5标准不仅解决了浏览器之间的兼容性问题,并且可能把文本作为数据对待,更容易复用。动画等效果也变得更生动。时至今日,HTML仍存在较多悬而未解决问题。有些浏览器未遵循HTML标准实现,或扩展自用标签等。这都反映了HTML的标准实际上尚未统一的现状。


10.1.3 设计应用CSS

    CSS(Cascading Style Sheets,层叠样式表)可以指定如何展现HTML内的各种元素,属于样式表标准之一。即使是相同的HTML文档,通过改变应用的CSS,用浏览器看到的页面外观也会随之改变。CSS的理念就是让文档的结构和设计分离,已达到解耦的目的。

    可用选择器(selector) .logo的指定范围内使用{}括起来的声明块中写明的padding:20px等声明语句应用指定的样式。可通过指定HTML元素或特定的class、ID等作为选择器来限定样式的应用范围。

    下面就是一个CSS的用例:

.logo {
	padding: 20px;
	text-align: center;
}



10.2 动态HTML


10.2.1 让Web页面动起来的动态HTML

    所谓动态HTML(Dynamic HTML),是指使用客户端脚本语言将静态的HTML内容变成动态的技术的总称。鼠标单击点开的新闻、Google Maps等可滚动的地图就用到了动态HTML。动态HTML技术是通过调用客户端脚本语言javascript,实现对HTML的Web页面的动态改造。利用DOM(Document Object Model,文档对象模型)可指定欲发生动态变化的HTML元素。


10.2.2  更容易控制的HTML的DOM

    DOM是用以操作HTML文档和XML文档的API(Application Programming Interface,应用编程接口)。使用DOM可以将HTML内的元素当做对象操作,如取出元素内的字符串、改变那个CSS的属性等.使页面的设计发生改变。通过调用JavaScript等脚本语言对DOM的操作,可以更为简单的方式控制HTML的改变。

<body>
        <h1>繁琐的Web安全</h1>
        <p>第一部分  Web的构成元素</p>
        <p>第二部分  浏览器的安全功能</p>
        <p>第三部分  接下来发生的事</p>
</body>

    

    比如从JavaScript的角度来看,将上述HTML文档的第三个P元素(P标签)改变文字颜色时,会像下方这样编写代码。document.getElementsByTagName(‘p‘)调用getElementsByTagName(‘p‘)函数,从整个HTML文档内(document object)取出P元素。接下来content[2].style.color = "#FF0000"语句指定content的索引为2(第三个)的元素的样式颜色改为红色。DOM内存在各种函数,会使用他们可查阅HTML中各个元素。


<script type="text/javascript">
    var content = document.getElementByTagName(‘p‘);
    content[2].style.color = "#FF0000"
</script>



10.3 Web应用


10.3.1 通过Web提供功能的Web应用

    Web应用是指通过Web功能提供的应用程序。比如购物网站、网上银行、SNS、BBS、搜索引擎和e-learning等。互联网或企业内网上遍布各式各样的Web应用。原本应用HTTP协议的Web机制就是客户端发来的请求,返回事前准备好的内容。可随着Web越来越普及,仅靠这样的做法已不足应对所有的需求,需要引入由程序创建HTML内容的做法。类似这种程序创建的内容称为动态内容,而事先准备好的内容称为静态内容。Web应用则是作用于动态内容上的。

技术分享


10.3.2 与Web服务器及程序协作的CGI

    CGI(Common Gateway Interface ,通用网关接口)是指Web服务器在接收到客户端发送过来的请求后转发给程序的一组机制。在CGI的作用下,程序会对请求内容做出相应的动作,比如创建HTML等动态内容。使用CGI的程序叫做CGI程序,通常Perl、php、Ruby、和C等编程语言编写而成的。具体流程如下:

技术分享


10.3.3 因Java而普及的Servlet

    Servlet是一种能在服务器上创建动态内容的程序。Servlet使用Java语言实现的一个接口,属于面向企业级Java(JavaEE,Java Enterprise Edition)的一部分。之前提及的CGI,由于每次接收到的请求,程序都要跟着启动一次。因此一旦访问量过大,Web服务器要承担相当大的负载。而Servlet运行在与Web服务器相同的进程中,因此受到的负载小。Servlet的运行环境叫做Web容器或Servlet容器。Servlet作为解决CGI问题的对抗技术,随着Java一起得到了普及。随着CGI的普及,每次请求都要启动新CGI程序的CGI运行机制逐渐变成了性能瓶颈,所以之后Servlet和mod_perl等可直接在Web服务器上运行的程序才得以开发、普及。

技术分享


10.4 数据发布的格式及语言


10.4.1 可扩展标记语言

    XML(eXtensible Marup Language,可扩展标记语言)是一种可按应用目标进行扩展的通用标记语言。旨在通过使用XML,使互联网数据共享变的更容易。XML和HTML都是从标准通用标记语言SGML(Standard Generalized Markup Language)简化而成的。与HTML相比,它对数据的记录方式做了特殊处理。下面就是以HTML编写某公司的研讨会议程为例进行说明:

<html>    
<head>     
<title>T公司研讨会介绍</title>         
</head>   
 
<body>    
<h1>T公司研讨会介绍</h1>
<ul>
    <li>研讨会编号:TR001
        <ul>
            <li>Web应用程序脆弱性诊断讲座</li>
        </ul>
     </li> 
    <li>研讨会编号:TR002
        <ul>
            <li>Web应用系统脆弱性诊断讲座</li>
        </ul>
     </li> 
</ul>  
</body>    
</html>


    用浏览器打开该文档时,会显示排列的列表内容,但是如果这些数据被其他应用程序读取会发生什么呢?某些程序虽然具备可通过识别布局特征取出文本的方法,但是这份HTML的样式一旦改变,要读取数据内容也就变得相对困难了,可见,为了保持数据的正确读取,HTML不适合用来记录数据结构。接着将这份列表以XML的形式改写成了以下的实例。

<研讨会 编号="TR001" 主题="Web应用程序脆弱性 诊断讲座">
    <类别>安全</类别>
    <概要>为深入研究Web应用程序脆弱性诊断必要的...</概要>
 </研讨会>
 <研讨会 编号="TR002" 主题="Web系统程序脆弱性 诊断讲座">
    <类别>安全</类别>
    <概要>为深入研究Web系统程序脆弱性诊断必要的...</概要>
 </研讨会>

    XML和HTML一样,使用标签构成树形结构。并且可自定义扩展标签,从XML文档中读取数据比起HTML更为简单。由于XML的结构基本上都是标签分隔而成的树形结构,因此通过语法分析器(Parser)的解析功能解析XML结构并取出数据元素,可更容易地对数据进行读取。更容易地复用数据使得XML在互联网上被广泛的接受,比如,可用在2个不同的应用之间的交换数据格式化。


10.4.2 发布更新信息的RSS/Atom

    RSS(简易信息聚合,也叫聚合内容)和Atom都是发布新闻或博文日志更新信息文档的格式的总称。两种都用到了XML。

    RSS有以下版本,名称和编写方式也不相同

    RSS 0.9 (RDF Site Summary):最初的RSS版本.1999年3月由网景通信公司自行开发用于其门户网站。基础构图创建在初期的RDF规格上。

    RSS 0.91(Rich Site Summary):在RSS0.9的基础上扩展元素,于1999年7月开发完毕。非RDF规格,使用XML方式编写。

    RSS 1.0(RDF Site Summary):RSS规格正处于混乱状态。2000年12月由RSS-DEV工作组再次采用RSS0.9中使用的RDF规格发布完成。

    RSS 2.0(Really Simple Syndication):非RSS1.0发展路线。增加支持RSS0.91的兼容性,2000年12月由UserLand Software公司开发完成。


    Atom具有以下两种标准:

    Atom供稿格式(Atom Syndication Format):为了发布内容而制定的网站消息来源格式,单讲Atom时,就以此为标准。

    Atom出版协定(Atom Publishing Protocol):为Web上内容的更新或修改而制定的协议。


    用于订阅博客更新信息的RSS阅读器,这种应用几乎支持RSS的所有版本以及Atom。

 下面是RSS1.0的实例:(具体详细信息建议参考网站http://web.resource.org/rss/1.0/)
<?xml version="1.0" encoding="utf-8"?>

<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns="http://purl.org/rss/1.0/"
>

  <channel rdf:about="http://www.xml.com/xml/news.rss">
    <title>XML.com</title>
    <link>http://xml.com/pub</link>
    <description>
      XML.com features a rich mix of information and services 
      for the XML community.
    </description>

    <image rdf:resource="http://xml.com/universal/images/xml_tiny.gif" />

    <items>
      <rdf:Seq>
        <rdf:li resource="http://xml.com/pub/2000/08/09/xslt/xslt.html" />
        <rdf:li resource="http://xml.com/pub/2000/08/09/rdfdb/index.html" />
      </rdf:Seq>
    </items>

  </channel>
  
  <image rdf:about="http://xml.com/universal/images/xml_tiny.gif">
    <title>XML.com</title>
    <link>http://www.xml.com</link>
    <url>http://xml.com/universal/images/xml_tiny.gif</url>
  </image>
  
  <item rdf:about="http://xml.com/pub/2000/08/09/xslt/xslt.html">
    <title>Processing Inclusions with XSLT</title>
    <link>http://xml.com/pub/2000/08/09/xslt/xslt.html</link>
    <description>
     Processing document inclusions with general XML tools can be 
     problematic. This article proposes a way of preserving inclusion 
     information through SAX-based processing.
    </description>
  </item>
  
  <item rdf:about="http://xml.com/pub/2000/08/09/rdfdb/index.html">
    <title>Putting RDF to Work</title>
    <link>http://xml.com/pub/2000/08/09/rdfdb/index.html</link>
    <description>
     Tool and API support for the Resource Description Framework 
     is slowly coming of age. Edd Dumbill takes a look at RDFDB, 
     one of the most exciting new RDF toolkits.
    </description>
  </item>

</rdf:RDF>


10.4.3 JavaScript衍生的轻量级易用JSON

    JSON(JavaScript Object Notation)是一种以JavaScript的对象表示法为基础的轻量级数据标记语言。能够处理的数据类型有false/null/ture/对象/数组/数字/字符串,这7种类型。

    JSON让数据更轻更纯粹,并且JSON的字符串形式可被JavaScript轻易地读入。当配合XML使用的Ajax技术也让JSON的应用变得更为广泛。另外,其它各种编程语言也提供丰富的库类,以达到轻便操作JSON的目的。ps:有关JSON更为详实的内容请参看RFC4627"The application/json Media TYpe for JavaScript Object Notation(JSON)"

    JSON格式:{"name":"Web Application Securety","num":"TR001"}


以上是关于读《图解HTTP》总结--第十章的主要内容,如果未能解决你的问题,请参考以下文章

读《图解HTTP》总结--第六章

读《图解HTTP》总结--第三章

读《图解HTTP》总结--第一章

读《图解HTTP》总结--第七章

读《图解HTTP》总结--第五章

读《图解HTTP》总结--第四章