HTTP状态码

状态码可以告知服务器端返回的请求结果

响应类别:

  1. 1XX(信息性状态码)请求正在处理
  2. 2XX(成功状态码)请求正常处理完毕
  3. 3XX(重定向)需要进行附加操作以完成请求
  4. 4XX(客户端错误)服务器无法处理请求
  5. 5XX(服务器错误)服务器处理请求出错

常用状态码

2XX

请求被正常处理

200 OK

表示请求被正常处理了,响应报文内容会随着方法不同而不同

204 No Content

请求成功处理,但是返回的响应报文内不含实体的主体部分,也不允许返回任何实体的主体

206 Partial Content

表示客户端进行了范围请求,且服务器成功执行了这部分的GET请求,响应报文中包含有Content-Range指定范围的实体内容

3XX

重定向

301 Moved Permanent

永久重定向,表示请求的资源已经被分配了新的URI

当指定资源路径最后忘记加斜杠也会产生301

302 Found

临时重定向,表示请求的资源已经被分配了新的URI,希望用户能用新的URI访问

与301不同的是这个移动只是临时性质的

304 See Other

表示请求的资源存在着另外一个URI,应使用GET方法定向获取请求的资源

当301,302,,303响应状态码返回时,几乎所有浏览器会把POST改成GET,并删除请求报文内的主体,然后请求会自动再次发送

304 Not Modified

表示当客户端发送带条件的请求时,服务器允许请求访问资源,但不满足条件,返回时不带任何响应的主体部分

307 Temporary Redirect

临时重定向,与302不同的是他不会把POST改成GET

4XX

400Bad Request

表示请求报文中存在语法错误,需要修改请求内容后再次发送请求,浏览器会像200OK一样对待该状态码

401 Unauthorized

表示请求需要用通过HTTP认证的认证信息,返回401的响应必须包含一个适用于被请求资源的WWW-Authenticate首部用以质询用户信息,当浏览器初次接收到401,会弹出认证用的对话窗口,如果之前已经进行过请求,则表示用户认证失败

403Forbidden

表示对请求资源的访问被服务器拒绝了

404Not Found

表示服务器上无法找到请求资源,也可以在服务器拒绝请求且不想说明理由时使用

5XX服务器错误

表示服务器本身发生错误

500 Internal Server Error

表示服务器在执行请求时发生了错误,也可能是Web引用存在的bug或者某些临时的故障

503 Service Unavailable

表示服务器暂时出于超负载或者进行停机维护,现在无法处理请求

状态码和实际状态并不会完全一致

编码提升传输速率

获取部分内容的范围请求

内容协商返回最合适的内容

HTTP信息

用于HTTP协议交互的信息叫做HTTP报文,全球短叫做请求报文,响应端叫做响应报文

HTTP报文大致可分成报文首部(请求/状态行+各种首部字段)和报文主体两块,两者使用空行划分(CR+LF),报文主体并非必须
请求报文响应报文.png
一般报文首部组成:

请求行:包含用于请求的方法,请求URI和HTTP版本

状态行:包含表名响应结果的状态码,原因短语和HTTP版本

首部字段:包含请求和响应的各种条件和属性的各种首部,通常有4种首部:通用/请求/响应/实体首部

其他RFC中没有定义的首部(如Cookie)

编码提升传输速率

HTTP早传输数据时可以通过编码来提升传输速率,但是编码需要由计算机来完成,因此会消耗更多的CPU等资源

报文主体和实体主体

报文:HTTP通信的基本单位,由组字节流组成

实体:作为请求或响应的的有效载荷数据被传输,内容有实体首部+实体主体

通常报文主体等于实体主体,但当进行编码时,实体主体内容发生变化与报文主体产生差异

压缩传输的内容编码

内容编码知名应用在实体内容上的编码格式,保持实体信息原样压缩,之后又客户端接收并负责解码,常用的又gzip.compress,deflate,identity

分割发送的分块传输编码

在传输大容量数据时,把数据分割成多块,能让浏览器逐步显示页面,这种把实体主体分块的功能成为分块传输编码

传输编码把实体主体分恒多个部分,每个用十六进制标记大小,实体主体的最后会用“0(CR+LF)”来标记

客户端接收后负责解码

发送多种数据的多部分对象集合

HTTP协议采用了多部分对象集合,发送的报文主体内科含有多类型实体

多部分对象集合包含对象如下

  1. multipart/form-data:在Web表单文件上传时使用
    multipartform-data.png
  2. multipart/byterangers:状态码206响应报文包含多个范围的内容时使用
    byteranges.png
    在HTTP报文中欧冠使用多部分对象集合时,需要在首部字段加上Content-type

使用边界字符串划分多部分对象集合指明的各类实体,在边界字符串指定的各个实体的起始行钱插入“--”标记(如上面的--AaB03x,--THis_STRING_SEPARATES)在多部分对象集合对于的字符串最后插入“--”标记作为结束

多部分对象集合的每个部分类型中,都可以含有首部字段,另外刻在某个部分中嵌套使用多本分对象集合,具体查看RFC2046

获取部分内容的范围请求

如果下载文件中遇到网络中断的情况,如果想要实现恢复(从下载中断处恢复下载)机制,则需要制定下载的实体范围,制定实体范围发送的请求叫做范围请求

执行范围请求时,会使用首部字段Range来制定资源的byte范围
Range: bytes=5001-10000
Range: bytes=5001- 从5001之后全部
Range: bytes=-3000, 5000-7000 开始到3000,5000到7000

对于范围请求,响应会返回状态码206 Partial Content的响应报文,对于多重范围的范围请求,响应会在首部字段Content-Type 标明multipart/byteranges

如果服务器端无法响应范围请求,则会返回状态码200 OK和完整的实体内容

内容协商返回最合适的内容

内容协商机制是指客户端和服务器就响应的资源内容进行交涉,然后提供合适的资源。

内容协商机制通过请求报文中的某些首部字段作为判断的标准

内容协商技术有3种类型

  1. 服务器驱动协商:有服务器端进行内容协商,以请求的首部字段为参考
  2. 客户端驱动协商:由客户端进行内容协商,用户从浏览器显示的可选项列表中手动选择
  3. 透明协商:即服务器驱动和客户端驱动的结合体

HTTP 协议用于客户端和服务器端之间的通信

HTTP协议和TCP/IP协议族内的其他众多的协议相同,用于客户端和服务器之间的通信。
请求访问文本或图像等资源的一端称为客户端,而提供资源响应的一端称为服务器端。

通过请求和响应交换达成通信

HTTP规定请求从客户端发出,服务器响应后返回

请求报文.png
GET表示请求访问服务器的类型,称为方法( method)。随后的字符串/index.htm指明了请求访问的资源对象,也叫请求URI(request-URI)。HTTP/1.1,即HTTP的版本号,用来提示客户端使用的HTTP协议功能。

请求报文=请求方法+请求URI+协议版本+可选的请求首部字段+内容实体构成的。

回复
HTTP/1.1 表示服务器对应的HTTP版本。200 OK表示请求的处理结果的状态码(status code)和原因短语( reason-phrase)

下一 -行显示了创建响应的日期时间,是首部字段( header field)内的一个属性。
接着以一空行分隔,之后的内容称为资源实体的主体( entitybody )。

响应报文=协议版本+状态码(表示请求成功或失败的数字代码)+用以解释状态码的原因短语+可选的响应首部字段以及实体主体

HTTP是不保存协议状态

HTTP是一种不保存状态,即无状态( stateless) 协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。如果想实现保持状态功能,就得引入Cookie技术

请求URI定位资源

HTTP使用URI定位互联网上的资源,当客户端请求访问资源时,URI需要作为请求URI包含在请求报文里,如果不是访问特定资源而是对服务器本身发起请求,可以用*代替请求URI
请求URI包含方式.png

告知服务器意图的HTTP方法

GET:获取资源
GET方法用来请求访问已被URI识别的资源。指定的资源经服务器端解析后返回响应内容。

GET在传输过程,数据被放在请求的URL中,且受URL长度限制,传送的数据量较小,Get是form提交的默认方法, Get限制Form表单的数据集的值必须为ASCII字符
GET.png

POST:传输实体主体
与GET相近,Post的所有操作对用户来说都是不可见的,且传送的数据量较大,一般被默认为不受限制,支持整个ISO10646字符集

PUT:传输文件
PUT方法用来传输文件。就像FTP协议的文件上传一样,要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。

PUT方法自身不带验证机制,存在安全性问题,

HEAD:获得报文首部
HEAD方法和GET方法- -样,只是不返回报文主体部分。用于确认URI的有效性及资源更新的日期时间等。

DELETE:删除文件
DELETE方法用来删除文件,是与PUT相反的方法。DELETE方法按请求URI删除指定的资源。

HTTP/1.1 的DELETE方法本身和PUT方法一样不带验证机制,不安全

OPTIONS:询问支持的方法
OPTIONS方法用来查询针对请求URI指定的资源支持的方法。

TRACE:追踪路径
TRACE方法是让Web服务器端将之前的请求通信环回给客户端的方法。

发送请求时,在Max-Forwards首部字段中填人数值,每经过一一个服务器端就将该数字减1,当数值刚好减到0时,就停止继续传输,最后接收到请求的服务器端则返回状态码200 OK的响应。

容易引发XST攻击,不安全

CONNECT:要求用隧道协议连接代理CONNECT方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL ( Secure Sockets Layer,安全套接
层)和TLS ( Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。
各版本支持方法.png

持久连接

只要容易一段没有明确提出断开连接,借保持TCP连接状态,在HTTP/1.1中所有链接默认都是持久连接

管线化

持久连接使得请求以管线化方式发送成为可能,即多个请求同时并行发送,不需要等待之前发送的请求得到响应

Cookie

Cookie会根据从服务器端发送的响应报文内的Set-Cookie首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。
服务器端发现客户端发送过来的Cookie后,会对比服务器上的记录得到之前的状态信息
Cookie.png

HTTP超文本传输(转移)协议

历史

TCP/IP简述

与HTTP关系密切的协议:IP、TCP、DNS

URI和URL

前述:客户端使用Web浏览器,通过指定的URL从Web服务器端获取文件资源等信息,从而显示出Web页面,这过程中使用HTTP协议完成一系列运作流程

历史

  1. HTTP于1990年问世,但是正式作为标准被公布是在1996年,以HTTP/1.0面世,并记载于RFC1945
  2. HTTP/1.1于1997年发布,RFC2068-->RFC2616
  3. HTTP是TCP/IP协议族里面一个子集

TCP/IP简述

计算机和网络设备之间通信时,两者基于一系列规则来进行操作,这种规则称之为协议(protocol)

把互联网相关联的协议的集合总衬为TCP/IP

TCP/IP协议层次化,需要改动时只要把变动的层替换掉,各层之间不需要相互了解,只需要做自己该做的事

各层作用如下

应用层

决定了向用户提供应用服务时的通信服务,如FTP(File Transfei Protocol文件传输协议),DNS(Domain Name System域名系统),HTTP等

传输层

对应上层应用层,提供处于网络连接中的两台计算机之间的数据传输
如TCP(Transmission Control Protocol传输控制协议),UDP(User Data Protocol用户数据报协议)

网络层

用来处理在网络上流动的数据包,数据包是网络传输的最小数据单位,改成规定了通过怎样的路径到达对方计算机,并把数据包传送给对方
如IP(Internet Protocol)

链路层

用来处理连接网络的硬件部分

利用TCP/IP协议族进行通信的时候,会通过分层顺序与对方进行通信,发送端在层与层之间传输数据时,每经过一层灰打上一个该层所属的首部信息,接收端在层与层传输数据时,每经过一层就会把对于的首部消去,这种把数据信息包装起来的做法成为封装
通信2.png#

与HTTP关系密切的协议:IP、TCP、DNS

IP(Internet Protocol)

IP协议位于网络层,作用是把各种数据包传送给对方,而要保证确实传送到对方那里需要满足各种条件,其中两个重要的条件是IP地址和MAC(Media Access Control Address)地址

IP地址指明了节点被分配到的地址,MAC地址是网卡所属的固定地址,IP可变,但是MAC地址基本上不会更改,两者可以进行配对

ARP

在传输过程中,需要经过多态计算机和网络设备中转才能连接到对方,在进行中转时,会利用下一站中转设备的MAC地址来搜寻下一个中转目标,这个过程中会采用ARP(Address Resolution Protocol)协议,ARP是一种用以解析地址的协议,根据通信方的IP地址就可以范查出对应的MAC地址

在传输过程的中转中,计算机和路由器等网络设备只能获悉很粗略的传输路线,这种机制成为路由选择,无论哪个设备,它都无法全面掌握互联网中的细节
传输细节模糊.png

TCP

TCP位于传输层,提供可靠的字节流服务,即将大块数据分割成以报文段(segment)为单位的数据包进行管理,且能够把数据准确可靠地传给对方,为了确保这一目的,TCP协议采用了三次握手等策略
三次握手四次挥手.gif

DNS

位于应用层,提供域名到IP地址之间的解析服务,即提供通过域名查找IP地址和从IP地址查询域名的服务
DNS.png

HTTP与各协议之间的关系.png

URI和URL

URI统一资源标识符

Uniform
规定统一的格式可以处理不同类型的资源

Resource
“可标识的任何东西”处理文档、图像或服务等能够区别于其他类型的,都可以作为资源,且资源可以是多数的集合体

Identifiter
标识符

URI是由某个协议方案表示的资源的定位标识符,协议方案是指访问资源所使用的协议类型名称,采用HTTP协议时,协议方案就是http,即用字符串去标识某一互联网资源

URL统一资源定位符

标识资源的地点,所以URL是URI的子集

URI格式

表示指定的URI,要使用涵盖全部必要信息的绝对URI,绝对URL及相对URL,相对URL是指从浏览器中基本URI处指定的URL,形如/www/website/haha.png

http://user:[email protected]:666/dir/index.htm?uid=1#ch1

http:协议方案名获取访问资源时要指定协议类型,不区分大小写,加冒号,也可使用javascript:这类指定数据或脚本程序的方案名

user:pass登录信息:指定用户名和密码作为从服务器获取资源时必要的登录信息,可选

www.shangxizhuan.site服务器地址:使用绝对URI必须指定带访问的服务器地址,地址可以是DNS可解析域名,也可以是ip地址

666服务器端口号:指定服务器连接的网络端口号,可选

dir/index.htm带层次的文件路径:指定服务器上文件路径来定位特指的资源

uid=1查询字符串:整队已指定的文件路径内的资源,可以使用查询字符串传入参数,可选

ch1片段标识符使用片段标识符可以标记出已获得资源中的子资源(文档内的某个位置)可选

RFCRequest for Comments,征求修正意见书。通常引用程序会遵照由RFC确定的标准实现,要是不展昭标准执行,可能会导致无法同

书签

杂项

基础

属性

元素/标签

链接

<head头>

HTML-CSS

图像

表格

表单

框架

脚本

字符实体

杂项

对中文网页需要使用<meta charset="utf-8">声明编码,否则会出现乱码

标签要使用小写

基础

<!DOCTYPE html>  //声明为HTML5文档
<html>        //元素是HTML页面的根元素

<head>      //包含文档的元数据
<meta charset="utf-8">
<title>你好世界</title> //描述文档的标题
</head>

<body>      //包含可见的页面内容

<h1>这是标题</h1>   //大标题
<p>这是段落</p>     //段落

</body>
</html>

HTML常是成对出现,第一个为开始标签,第二个为结束标签

标题

<h1>标题1</h1>
<h2>标题2</h2>

段落

<p>段落</p>
<p>这还是一个段落</p>

链接<a>

<a href="https://www.shangxizhuan.site">

图像<img>

<img loading="lazy" src="/images/logo.png"width="100"height="100"/>
loading="lazy"延迟加载属性
loading="eager"立即加载,为默认属性

空元素

没有内容的元素被称为空元素,空元素在开始标签中关闭

换行<br/>

如果希望在不产生新段落的情况下换行,可以使用<br>标签

<p>这个<br>段落<br>演示了分行的效果</p>

属性

  1. 属性可以在元素中添加附加信息
  2. 一般描述于开始标签
  3. 以名称/值对的形式出现
  4. 如果属性值本身含有双引号,则需要使用单引号

常用属性

  1. class 为html元素定义一个或多个类名
  2. id 定义元素唯一的id
  3. style 规定元素的行内样式
  4. title 描述元素的额外信息
  5. cite描述引用源
  6. href规定外部资源的位置,建立当前元素和文档间的链接,浏览器会识别href引用的文档并行下载该文档,并且不会停止对当前文档的处理
  7. src所指向的内容会被潜入到文档当前所在的位置,当浏览器额解析到src引用时,会暂停浏览器的渲染,知道该资源加载完毕
  8. rel属性规定当前文档与被连接文档之间的关系,具体见其属性值

元素/标签

区块和内联

区块:块级元素在浏览器显示的时候,通常会以新行来开始和解释,如<h1>, <p>, <ul>, <table>

内联:内联元素在显示时通常不会以新行开始 <b>, <td>, <a>, <img>

<div>块级,可用于组合其他HTML元素的容器

<span>内联,可作为文本容器

水平线

<p>段落</p>
<hr>
<p>段落</p>

注释

<!-- 这是注释 -->

格式化标签

<b></b>加粗
<strong></strong>加粗
<big></big>放大
<em></em>斜体
<i></i>斜体
<small></small>缩小
<sub></sub>下标
<sup></sup>上标
<del></del>删除字
<ins></ins>插入字

删除字效果演示

这是不是插入字的演示!

这是标和标的演示

计算机输出标签

<code></code>代码
<kbd></kbd>键盘码
<samp></samp>代码样本
<var></var>定义变量
<pre></pre>定义预格式文本


echo<<"这是samp的效果";


echo<<"这是code的效果";

引文,引用,及标签定义

<abbr>定义缩写
<address>定义地址
<bdo>定义文字方向 dir=rtl/ltr
<blockquote>定义长的引用
<q>定义短的引用语
<cite>定义引用、引证
<dfn>定义一个定义项目

<abbr>演示

上喜撰

<address>演示

此文章由爱喝上喜撰的作者创作
2020/10/19

<bdo>演示

本文本从右到左显示

<blockquote>演示

此文章来自上喜撰

<cite>演示

The Scream

The Scream by Edward Munch. Painted in 1893.

<dfn>演示

项目

链接

<a href="shangxizhuan.site">此文本</a>是一个指向本网站的连接

此文本是一个指向本网站的连接

target属性
定义被链接的文档在何处显示

<a href="shangxizhuan.site" target="_blank" rel="noopener noreferrer">      //rel属性规定了被连接文档和本文档之间的关系,当target="_blank"时,rel应该等于noopener noreferrer,用于堵住钓鱼安全漏洞

noreferrer 标记在单击链接时隐藏引用者信息。如果有人从使用此标记的链接到达您的网站,您的分析将不会显示谁提到该链接。相反,它会错误地显示为您的统计流量报告中的直接流量

rel =“noopener”在新标签中打开链接时基本上不会打开它的开启者。这意味着,它的 window.opener 属性将是在新标签中打开一个链接时,而不是从那里的链接打开同一个页面为空。一般都是搭配 target="_blank"同时使用,因为 target="_blank" 也是一个安全漏洞:新的页面可以通过 window.opener 访问您的窗口对象,并且它可以使用 window.opener.location = newURL 将您的页面导航至不同的网址。新页面将与您的页面在同一个进程上运行,如果新页面正在执行开销极大的 JavaScript,您的页面性能可能会受影响。

创建图片链接

<a href="//www.shangxizhuan.site/xxx/xxx.html>
<img border="100" src="smoley.gif alt="shangxiazhuan" width="30" higth="30"> 
</a></p>
//如果是无边框的图片,则border=0

书签

<a href="#C4">查看第四章节</a>
<h1><a id="C4">第四章</a><h1>
<p>内容</p>

跳出框架

<a href="//www.shangxizhauun.site" target="_top">点这!</a>

其他属性,加粗为HTML5不支持

  1. charset 规定目标 URL 的字符编码。 char_encoding
  2. coords 规定链接的坐标 coordinates

邮件

<a href="mailto:[email protected]?Subject=Hello%20happy"target="_top">
发邮件给我</a>  //%20为空格之意

<head>

<head>中你可以插入脚本、CSS、各种meta信息
可添加在头部区域的元素标签为
<title>,<style>,<mata>,<link>,<script>,<noscript>,<base>

<base>描述了文档中所有标签的默认链接
<head>
<base href="http://www.shangxizhuan.site/xxx/" target"_blank">
</head>

<link>定义了文档与外部资源之间的关系
<link rel="stylesheet" type="text/css" href="xxx.css">

<meta>描述一些元数据
<meta name="keywords" content="HTML,安全"> //为搜索引擎定义关键字
<meta name="description" content="HTML"> //为网页定义描述内容
<meta name="作者" contenr="shangxizhuan"> //定义网页作者
<meta http-equiv="refresh" content="30"> //每30s刷新页面

<script>标签用于加载脚本文件

HTML-CSS

CSS可以通过一下方式添加到HTML中

  1. 内联样式:在HTML元素中使用style属性
  2. 内联样式表:在头<head>区域使用<style>元素来包含CSS
  3. 外部引用:使用外部CSS文件(最优)

内联

<body style="background-color:yellow;">
<h3>背景颜色演示</h3>
<p>内容</p>
</body>

<h1 style="font-family:verdana;">标题</h1>

<p style="font-family:arial;color:red;font-size:20px;">段落</p>

//font-family字体,color颜色,font-size字体大小

<h1 style="text-align:center;">居中</h1>

内部样式表

<head>
<style type="text/css">
body {background-color:yellow;}
p {color:blue;}
</style>
</head>

外部样式表

<head>
<link rel="stylesheet" type=text/css" href="mystyle.css">
</head>

图像

<p>这里插入一个图片<img src="hello.gif" alt="say hello" width="50" height="50"></p>

src="/images/chrome.gif" //来自文件夹

src="//www.runoob.com/images/logo.png" //来自网页


src为图像的url地址
akt用来为图像定义一串预备的可替换文本

创建可点不同区域的地图

<img src="planets.gif" width="145" height="126" alt="Planets" usemap="#planetmap">

<map name="planetmap">
  <area shape="rect" coords="0,0,82,126" alt="Sun" href="sun.htm">
  <area shape="circle" coords="90,58,3" alt="Mercury" href="mercur.htm">
  <area shape="circle" coords="124,58,8" alt="Venus" href="venus.htm">
</map>

coords 属性规定区域的 x 和 y 坐标。

coords 属性与 shape 属性配合使用,来规定区域的尺寸、形状和位置。

图像左上角的坐标是 "0,0"。

圆形:shape="circle",coords="x,y,z"
多边形:shape="polygon",coords="x1,y1,x2,y2,x3,y3,..."
矩形:shape="rectangle",coords="x1,y1,x2,y2"

如果某个 area 标签中的坐标和其他区域发生了重叠,会优先采用最先出现的 area 标签。浏览器会忽略超过图像边界范围之外的坐标。

表格

表格<table>
表格行<tr>
表格数据<td>
表头<th>

两行三列表
<table border="1">
<tr>
<th>A</th>
<th>B</th>
<th>C</th>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>

单元格跨两列
<th colspan="2">Telephone</th>

跨两行
<th rowspan="2">Telephone:</th>

单元格间距10
<table border="1" cellspacing="10">

带标题的表格
<table border="1">
  <caption>Monthly savings</caption>
  <tr>
  .......

列表

无序列表
<ul>
  <li>Coffee</li>
  <li>Tea</li>
  <li>Milk</li>
</ul>

有序列表,从50开始
<ol start="50">
  <li>Coffee</li>
  <li>Tea</li>
  <li>Milk</li>
</ol>

表单

文本域

<form action="">
First name: <input type="text" name="firstname"><br>
Last name: <input type="text" name="lastname">
</form>

密码

密码字段<input type="password">

单选

<form>
<input type="radio" name="sex" value="male">Male<br>
<input type="radio" name="sex" value="female">Female
</from>

复选框

<form>
<input type="checkbox" name="vehicle" value="Bike">I have a bike<br>
<input type="checkbox" name="vehicle" value="Car">I have a car
</form>

提交按钮

<form name="input" action="html_form_action.php" method="get">
Username: <input type="text" name="user">
<input type="submit" value="Submit">
</form>
当按下确认时,表单内的内容会被传送到动作属性所设置的另外一个文件

下拉框

<form action="">
<select name="cars">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="fiat">Fiat</option>
<option value="audi">Audi</option>
</select>
</form>

按钮

<form action="">
<input type="button" value="Hello world!">
</form>

文本框

<textarea rows="10" cols="30">
我是一个文本框。
</textarea>

带复选框的提交表单

<form action="demo-form.php" method="get">
  <input type="checkbox" name="vehicle[]" value="Bike"> I have a bike<br>
  <input type="checkbox" name="vehicle[]" value="Car" checked="checked"> I have a car<br>
  <input type="submit" value="提交">
</form>

框架

通过框架,可以在一个浏览器窗口中显示不止一个页面

<iframe src="url"></iframe>

width,height定义标签的高度和宽度
frameboder定义边框,等于0则移除边框

显示目标连接页面

<iframe src="demo_iframe.htm" name="iframe_a"></iframe>
<p><a href="//www.runoob.com" target="iframe_a">RUNOOB.COM</a></p>

脚本

<script>
document.wirte("Hello")
</script>
<noscript>抱歉,您的浏览器不支持JavaScript!</noscript>
///如果浏览器不支持JS,则会显示<noscript>里面的内容
只能在HTML输出流中使用document.write,如果在文档已经加载后使用,则会覆盖整个文档
<script>
document.write("<h1>这是一个标题</h1>");
document.write("<p>这是一个段落。</p>");
</script>

按钮

<h1>我的第一个 JavaScript </h1>

<p id="demo">
JavaScript 可以触发事件,就像按钮点击。</p>

<script>
function myFunction()
{
    document.getElementById("demo").innerHTML="Hello JavaScript!";
}
</script>
<button type="button" onclick="myFunction()">点我</button>

字符实体

一些预留字符/键盘上找不到的字符必须被替换为字符实体,如<>不然浏览器会误认他们为标签

符号      实体名称    实体编号
空格      &nbsp       &#160
<         lt          60
>         gt          62
&         amp         38
"         quot        34
'         apos        39

字符实体对大小写敏感