Meta 标签
简介
- <meta> 元素表示那些不能由其它HTML元相关元素 (<base>, <link>, <script>, <style> 或 <title>) 之一表示的任何元数据信息.
- <base> 元素 指定用于一个文档中包含的所有相对URL的基本URL。一份中只能有一个<base>元素。
- <link>元素规定了外部资源与当前文档的关系。 这个元素可用来为导航定义一个关系框架。这个元素最常于链接样式表(外链)。
- <style>元素包含文档的样式信息或者文档的部分内容。默认情况下,该标签的样式信息通常是CSS的格式。(和link的区别,style包含的是内链样式,本身没有url属性)
- 根据属性集合的不同,元数据的类型可以是以下类型之一:
- name被设置,代表该标签是文档级元数据,适用于整个页面。
- http-equiv被设置,代表告诉Web服务器应该如何提供网页的信息。
- charset被设置,表明网页使用的字符编码
- itemprop被设置,代表该标签是用户定义的元数据(自定义标签?)
- <meta> 元素必须包含在 <head> 元素中并且在HTML代码的前1024个字节内,因为某些浏览器在选择编码之前只查看前面这些字节。
属性
- 在同一个 <meta> 标签中,name, http-equiv 或者 charset 三者中任何一个属性存在时,itemprop 属性不能被使用。
- 以下属性已被废弃 scheme
charset
- 此特性声明当前文档所使用的字符编码,但该声明可以被任何一个元素的 lang 特性的值覆盖。
- 此特性的值必须是一个符合由IANA所定义的字符编码首选MIME 名称(preferred MIME name )之一。不应该使用不兼容ASCII的编码规范,鼓励使用 UTF-8
- 开发者必须禁用 CESU-8, UTF-7, BOCU-1 或 SCSU 这些字符集,因为这些字符集已经被证实存在跨站脚本攻击(XSS)的风险。
- HTTP的Content-Type头部以及任何Byte-Order Marks元素(字节顺序标志元素)都优先于此元素。
- 强烈建议使用该属性定义字符编码. 如果未定义,某些跨脚本技术可能危害网页,如 UTF-7 fallback cross-scripting technique. 保持设置该属性以避免类似风险。
content
- 此属性包含http-equiv 或name 属性的值,具体取决于所使用的值。
http-equiv
- 这个枚举属性定义了能改变服务器和用户引擎行为的编译。这个编译值使用content 来定义
- content-type、content-language、set-cookie 这些值已经被废弃
- content-security-policy 内容安全策略:它允许页面作者定义当前页的 内容策略。 内容策略主要指定允许的服务器源和脚本端点,这有助于防止跨站点脚本攻击。
- default-style这个属性指定了在页面上使用的首选样式表. content属性必须包含<link> 元素的标题, href属性链接到CSS样式表或包含CSS样式表的<style>元素的标题.
- refresh这个属性指定
- 如果content 只包含一个正整数,则是重新载入页面的时间间隔(秒);
- 如果content 包含一个正整数并且跟着一个字符串,则是重定向到指定链接的时间间隔(秒)
<meta http-equiv="refresh" content="3;url=http://www.mozilla.org/">
name
- 该属性定义文档级元数据的名称。
- 如果以下其中一个属性设置了itemprop, http-equiv, charset ,就不能在设置这个属性了。
- application-name,定义正运行在该网页上的网络应用名称;?
- author,就是这个文档的作者名称,可以用自由的格式去定义;
- description,其中包含页面内容的简短和精确的描述。 一些浏览器,如Firefox和Opera,将其用作书签页面的默认描述。
- generator, 包含生成页面的软件的标识符。?
- keywords, 包含与逗号分隔的页面内容相关的单词。?
- referrer 控制所有从该文档发出的 HTTP 请求中HTTP Referer 首部的内容:<meta name="referrer"> content 属性可取的值:
- no-referrer 不要发送 HTTP Referer 首部。
- origin 发送当前文档的 origin。origin指Web内容的源由用于访问它的URL 的方案(协议),主机(域名)和端口定义
- no-referrer-when-downgrade 当目的地是先验安全的(https->https)则发送 origin 作为 referrer ,但是当目的地是较不安全的 (https->http)时则不发送 referrer 。这个是默认的行为。
- origin-when-crossorigin 在同源请求下,发送完整的URL (不含查询参数) ,其他情况下则仅发送当前文档的 origin。
- unsafe-URL 在同源请求下,发送完整的URL (不含查询参数)。
- 动态地插入<meta name="referrer"> (通过 document.write 或者 appendChild) 是不起作用的。同样注意如果同时有多个彼此冲突的策略被定义,那么 no-referrer 策略会生效。
- 还有以下值常被使用,但未包含到规范当中。creator、googlebot、publisher、robots、slurp、viewport
- viewport 它提供有关视口初始大小的提示,仅供移动设备使用。<meta name="viewport "> content 属性可取的值:
- width 一个正整数或者字符串,以pixels(像素)为单位, 定义viewport(视口)的宽度。
- height 一个正整数或者字符串,以pixels(像素)为单位, 定义viewport(视口)的高度
- initial-scale 一个0.0 到10.0之间的正数,定义设备宽度(纵向模式下的设备宽度或横向模式下的设备高度)与视口大小之间的缩放比率。
- maximum-scale 一个0.0 到10.0之间的正数,定义缩放的最大值;它必须大于或等于minimum-scale的值,不然会导致不确定的行为发生。
- minimum-scale 一个0.0 到10.0之间的正数,定义缩放的最小值;它必须小于或等于maximum-scale的值,不然会导致不确定的行为发生。
- user-scalable 一个布尔值(yes 或者no),如果设置为 no,用户将不能放大或缩小网页。默认值为 yes。
特殊使用示例
- 浏览器不进行文件缓存
// 仅有IE才能识别这段meta标签含义,其它主流浏览器仅识别“Cache-Control: no-store”的meta标签。
// 这两个属性在MDN中没有记载,都和http请求头部相关。
// 在IE中识别到该meta标签含义,并不一定会在请求字段加上Pragma,但的确会让当前页面每次都发新请求(仅限页面,页面上的资源则不受影响)。
// no-cache 告诉浏览器忽略资源的缓存副本,每次访问都需要去服务器拉取
<meta http-equiv="Pragma" content="no-cache">
// no-cache 告诉浏览器忽略资源的缓存副本,强制每次请求直接发送给服务器,拉取资源,但不是“不缓存”。(Ctrl+F5会重置Cache-Control=no-cache)
// no-store 强制缓存在任何情况下都不要保留任何副本
// must-revalidate 缓存必须在使用之前验证旧资源的状态,并且不可使用过期资源
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />

更多精彩