Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HTML<meta>小记 #4

Open
fengma1992 opened this issue Aug 2, 2018 · 0 comments
Open

HTML<meta>小记 #4

fengma1992 opened this issue Aug 2, 2018 · 0 comments

Comments

@fengma1992
Copy link
Owner

fengma1992 commented Aug 2, 2018

简介

HTML <meta>元素表示那些不能由其它HTML元相关元素 (<base>, <link>, <script>, <style> 或 <title>) 之一表示的任何元数据信息。

<meta>常用于定义页面的说明,关键字,最后修改日期,和其它的元数据。这些元数据将服务于浏览器(如何布局或重载页面),搜索引擎和其它网络服务。

<meta>包含全局属性。
注意:<meta>是一个空元素,因此必选写开始标签,不需写结束标签

<meta> // 正确

<meta/> // 没必要
<meta></meta> // 没必要

charset

声明页面的字符编码:

<meta charset="UTF-8">

需要注意的是,

  • 声明字符编码必须在<head>元素内且位于HTML文档的前512bytes中,因为有的浏览器只查找到512bytes来确定编码。
  • 此属性可被HTTP头Content-Type或其他任意的字符顺序标记覆盖。

此处附上charset可用值:standard IANA MIME name for character encodings

content

content属性的内容是htp-equiv或name属性的值,具体取决于你用哪一个。

http-equiv

该属性可以包含HTTP头的名称,属性的英文全称为http-equivalent。它定义了可以改变server和user-agent行为的指令。该指令的值在content属性内定义,可以是以下之一:

expires

用于设定网页的到期时间,过期后网页必须到服务器上重新传输

<meta http-equiv="expires" content="Thursday August 02 2018 15:00:00 GMT+0800">

cache-control

指定请求和响应遵循的缓存机制。共有以下几种用法:

  • no-cache: 先发送请求,与服务器确认该资源是否被更改,如果未被更改,则使用缓存。

  • no-store: 不允许缓存,每次都要去服务器上,下载完整的响应。(安全措施)

  • public: 缓存所有响应,但并非必须。因为max-age也可以做到相同效果。

  • private: 只为单个用户缓存,因此不允许任何中继进行缓存。(比如说CDN就不允许缓存private的响应)

  • max-age: 表示当前请求开始,该响应在多久内能被缓存和重用,而不去服务器重新请求。例如:max-age=60表示响应可以再缓存和重用 60 秒。

content-security-policy

允许页面作者定义当前页面的内容策略。内容策略主要指定允许的服务器地址和脚本端点,这有助于防止cross-site scripting攻击。

CSP 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置。

CSP 大大增强了网页的安全性。攻击者即使发现了漏洞,也没法注入脚本,除非还控制了一台列入了白名单的可信主机。
两种方法可以启用 CSP。一种是通过 HTTP 头信息的Content-Security-Policy的字段。

Content-Security-Policy: script-src 'self'; object-src 'none';
style-src cdn.example.org third-party.org; child-src https:

另一种是使用 <meta> 标签

<meta http-equiv="Content-Security-Policy" content="script-src 'self'; object-src 'none'; style-src cdn.example.org third-party.org; child-src https:">

上面代码中,CSP 做了如下配置:

  • 脚本:只信任当前域名

  • <object>标签:不信任任何URL,即不加载任何资源

  • 样式表:只信任cdn.example.org和third-party.org

  • 框架(frame):必须使用HTTPS协议加载

  • 其他资源:没有限制

启用后,不符合 CSP 的外部资源就会被阻止加载。

更多介绍可见:阮一峰Content Security Policy 入门教程

refresh

  • 如果content属性只包含一个正整数,定义页面重载时间。
  • 如果content属性包含一个正整数,后跟字符串';url =',那么表示当前页面XX秒后重定向到另一个有效的URL。
<meta http-equiv="refresh" content="2;url=http://www.github.com/"> //2秒后跳转到GitHub

X-UA-Compatible

用于告知浏览器以何种版本来渲染页面。

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> //指定IE和Chrome使用最新版本渲染当前页面

content-language(已废弃)

定义页面的默认语言,可被任意元素的lang属性覆盖,更推荐在元素中写lang属性。

content-type(已废弃)

定义文档的MIME type,推荐使用元素的charset属性。

<meta http-equiv="content-Type" content="text/html charset=UTF-8">

set-cookie(已废弃)

定义页面的cookie,推荐使用HTTP头Set-Cookie。

此处附上IETF HTTP Cookie Specification

name

该属性定义文档级元数据的名称。定义之后全局生效。不能和以下属性同时设置: itemprop, http-equiv 或 charset。

<!DOCTYPE HTML>
<html>
    <head>
        <title>demo</title>
        <meta name="keywords" content="meta,笔记">
        <meta name="author" content="fengma1992">
        <meta name="description" content="HTML<meta>小记">
    </head>
    <body>
        <div>welcome</div>
    </body>
</html>

该元数据名称与content属性包含的值相关联。 name属性的可能值为:

元数据名称(name的值) 说明
application-name 当前页所属Web应用系统的名称
keywords 描述网站内容的关键词,以逗号隔开,用于SEO搜索
description 当前页的说明
author 当前页的作者名
copyright 版权信息
referrer referrer 控制document发起的Request请求中附加的Referer HTTP header,相应的值在content中
viewport 提供了关于viewport初始大小的大小的提示。仅供移动设备使用。目前处于Working Draft阶段
robots robots用来告诉爬虫哪些页面需要索引,哪些页面不需要索引。
revisit-after 爬虫重访时间
renderer renderer是为双核浏览器准备的,用于指定双核浏览器默认以何种方式渲染页面

referrer

content 含义
no-referrer 不发送HTTP Referer头
origin 发送document的origin
no-referrer-when-downgrade 将origin作为referer发送到和当前页面同等安全的URLs(https->https),但不会将origin发送到不安全的URLS(https->http)。这是默认行为。
origin-when-crossorigin same-origin的请求,发送的完整URL(剥离参数),但在其他情况下只发送origin
unsafe-URL same-origin 或 cross-origin的请求,将发送完整的URL(剥离参数)

viewport

注意:

  • 虽然viewport目前处于非标准阶段,这个生命实际上被绝大部分浏览器遵从。
  • 不同设备和浏览器之间的默认值可能有差别
content取值 描述
width 整数或device-width 定义viewport的像素宽度,或允许viewport适应设备的屏幕宽度。
height 整数或device-height 定义viewport的高度。没有任何浏览器使用(???MDN这么写)
initial-scale 0.0 - 10.0 定义设备宽度(纵向模式下的设备宽度或横向模式下的设备高度)与viewport大小之间的比例。
maximum-scale 0.0 - 10.0 定义最大的缩放级别。它必须大于或等于minimum-scale,否则视为未定义。浏览器设置可以忽略此规则,iOS10 +默认情况下忽略它。
minimum-scale 0.0 - 10.0 定义最小的缩放级别。它必须小于或等于maximum-scale,否则视为未定义。浏览器设置可以忽略此规则,iOS10 +默认情况下忽略它。
user-scalable yes 或 no 如果设置为no,用户将无法放大网页。默认值为yes。浏览器设置可以忽略此规则,iOS10 +默认情况下忽略它。

robots

描述 Used By
index 允许robot索引本页面(默认) All
noindex 不允许robot索引本页面 All
follow 允许搜索引擎继续通过此网页的链接索引搜索其它的网页(默认) All
nofollow 搜索引擎不继续通过此网页的链接索引搜索其它的网页 All
none 相当于noindex,nofollow Google
noodp 禁止使用Open Directory Project描述(如果有的话)作为搜索引擎结果中的页面描述。 Google, Yahoo, Bing
noarchive 要求搜索引擎不缓存页面内容 Google, Yahoo, Bing
nosnippet 禁止在搜索引擎结果中显示该页面的任何描述。 Google, Bing
noimageindex 要求此页面不作为引用页面的索引图像的显示。 Google
nocache 和noarchive同义 Bing

revisit-after

如果页面不是经常更新,为了减轻搜索引擎爬虫对服务器带来的压力,可以设置一个爬虫的重访时间。如果重访时间过短,爬虫将按它们定义的默认时间来访问。

<meta name="revisit-after" content="7 days" >

renderer

<meta name="renderer" content="webkit"> //默认webkit内核 
<meta name="renderer" content="ie-comp"> //默认IE兼容模式 
<meta name="renderer" content="ie-stand"> //默认IE标准模式
<meta name="renderer" content="webkit|ie-comp|ie-stand">

<meta>常见用法

禁止缩放(移动端)

<meta name="viewport" content="initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">

自动刷新

对于某些需重复请求数据的页面如文字直播等可用(虽然体验很差)

<meta http-equiv="refresh" content="5">

自动重定向

<meta http-equiv="refresh" content="5;url=http://www.github.com">

禁止转码(百度等搜索引擎)

<meta http-equiv="Cache-Control" content="no-siteapp">

禁止文字格式检测

屏蔽检测数字为电话号码

<meta name="format-detection" content="telephone=no">
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant