中繼資料描述文件,而不是構成文件的主要可見內容。
HTML 中的中繼資料通常位於 <head>。它可以識別字元編碼、描述網頁、提供瀏覽器處理指示,以及向搜尋引擎或分享服務提供資訊。
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="介紹無障礙 HTML 的入門內容。">
<title>無障礙 HTML:入門介紹</title>
</head><meta> 只是 HTML 中繼資料系統的一部分。相關元素包括 <title>、<link>、<style> 和 <base>。
使用準確描述網頁的中繼資料。並非所有欄位都必須提供,不同工具及服務也不一定以相同方式解讀它們。
33.1 <meta> 元素
<meta> 是空元素,沒有子內容,也沒有結束標籤:
<meta name="author" content="課程開發團隊">不要寫成:
<!-- 錯誤:meta 是空元素。 -->
<meta name="author">課程開發團隊</meta>主要屬性支援不同形式的中繼資料:
| 屬性 | 用途 |
|---|---|
charset | 宣告文件的字元編碼 |
name | 識別中繼資料名稱 |
content | 提供具名中繼資料或處理指示的值 |
http-equiv | 指定受支援的瀏覽器處理指示 |
應選擇適當形式,而不是混合不相關的屬性。
33.2 字元編碼
使用 UTF-8:
<meta charset="utf-8">將宣告放在 <head> 的開頭附近。完整宣告必須位於文件最初的 1,024 個位元組內。
<!doctype html>
<html lang="zh-Hant-HK">
<head>
<meta charset="utf-8">
<title>HTML 課程</title>
</head>
<body>
<h1>歡迎</h1>
</body>
</html>另外也應:
- 使用 UTF-8 儲存檔案。
- 以適當的 HTTP
Content-Type傳送文件。 - 避免互相衝突的編碼宣告。
HTML 回應可以使用以下 HTTP 標頭:
Content-Type: text/html; charset=utf-8字元編碼與自然語言不同:
| 宣告 | 意思 |
|---|---|
<meta charset="utf-8"> | 如何將位元組解讀為字元 |
<html lang="zh-Hant-HK"> | 文件的主要自然語言 |
兩者不能互相取代。
33.3 網頁標題
雖然 <title> 不是 <meta> 元素,但它是重要的文件中繼資料:
<title>HTML 表單:標籤與控制元素 | 網頁學習</title>標題通常出現在:
- 瀏覽器分頁。
- 書籤。
- 瀏覽記錄。
- 搜尋結果,但搜尋引擎可能改寫它。
應使用能識別特定網頁的標題。
避免為所有網頁使用「首頁」或「網站」等籠統標題。
文件標題與可見標題具有不同用途:
<head>
<title>HTML 表單:標籤與控制元素 | 網頁學習</title>
</head>
<body>
<h1>標籤與控制元素</h1>
</body>兩者可以相似,但不必完全相同。
33.4 網頁描述
描述用來概括網頁內容:
<meta
name="description"
content="學習如何將標籤與表單控制元素關聯,以及組織相關輸入欄位。"
>搜尋引擎可能使用這些文字作為搜尋結果摘要,也可能改用網頁內的文字。
有用的描述應:
- 準確描述內容。
- 針對特定網頁。
- 使用清晰、自然的語言。
- 避免誇張聲稱及堆砌關鍵字。
沒有通用的字元上限能保證完整顯示。摘要長度取決於服務、裝置及搜尋情境。
描述不能取代清晰的可見內容。
33.5 檢視區中繼資料
響應式網頁應使用:
<meta name="viewport" content="width=device-width, initial-scale=1">這會要求支援的瀏覽器,以裝置寬度作為版面檢視區寬度,並設定初始縮放比例為 1。
它有助響應式 CSS 在流動裝置上按預期運作,但本身不會令網頁變成響應式。
你仍然需要彈性版面、適當尺寸及可閱讀內容。
不要不必要地限制縮放。
避免以下設定:
<!-- 避免限制使用者放大網頁。 -->
<meta
name="viewport"
content="width=device-width, initial-scale=1, user-scalable=no"
>使用者可能需要放大內容,才能閱讀或操作介面。
33.6 作者與產生工具資訊
非必要的中繼資料可以識別作者或產生網頁的軟件:
<meta name="author" content="課程開發團隊">
<meta name="generator" content="範例靜態網站產生工具">這些欄位不會建立可見的署名資訊。
如果作者身分對讀者重要,也應提供可見資訊。
沒有必要時,不要公開個人資料或軟件版本資訊。任何能存取文件原始碼的人,都可以閱讀中繼資料。
過往使用的 keywords 欄位,通常對主要搜尋引擎排名沒有幫助:
<meta name="keywords" content="HTML, 表單, 無障礙功能">不要將時間花在關鍵字清單上,而忽略改善實際網頁。
33.7 搜尋引擎指示
部分搜尋引擎識別 robots 中繼資料:
<meta name="robots" content="noindex">常見指令包括:
| 指令 | 一般意圖 |
|---|---|
noindex | 不將此頁加入搜尋結果 |
nofollow | 要求不跟隨網頁上的連結 |
nosnippet | 不顯示文字摘要 |
noimageindex | 不將此頁圖片加入索引 |
不同爬蟲的支援及解讀方式有所不同。
重要限制包括:
noindex不是存取控制。- 爬蟲通常需要取得網頁,才能發現該指令。
- 使用
robots.txt阻止爬取,可能令爬蟲無法發現noindex。 - 不遵守規則的爬蟲可以忽略這些指示。
私人內容應使用身分驗證及授權保護,而不是依靠中繼資料。
非 HTML 資源可以透過伺服器的 X-Robots-Tag HTTP 回應標頭提供適用指示。
33.8 瀏覽器主題與配色方案
theme-color 為支援的瀏覽器介面元素建議顏色:
<meta name="theme-color" content="#005ea8">它不會設定網頁背景顏色。
color-scheme 宣告文件支援的配色方案:
<meta name="color-scheme" content="light dark">這可以影響瀏覽器提供的控制元素及其他預設呈現方式。
只宣告網頁實際支援的配色方案。使用 CSS 適當設定網頁樣式,並測試每個支援方案的對比度。
33.9 來源頁面資訊政策
來源頁面中繼資料控制請求所傳送的來源頁面資訊:
<meta name="referrer" content="strict-origin-when-cross-origin">更嚴格的政策:
<meta name="referrer" content="no-referrer">應放在 <head> 開頭附近,讓瀏覽器在相關請求之前讀取它。
政策也可以透過 HTTP 回應標頭提供:
Referrer-Policy: strict-origin-when-cross-origin連結及 iframe 等個別元素,也可以支援自己的 referrerpolicy 屬性。
不傳送來源頁面資訊,不代表請求匿名。目的地仍然可以收到其他資訊,包括請求者的 IP 地址。
33.10 http-equiv 屬性
http-equiv 支援特定瀏覽器處理指示,有時稱為 pragma 指令:
<meta http-equiv="refresh" content="30">這個例子要求在 30 秒後重新整理。
不過,http-equiv 不是設定任意 HTTP 回應標頭的通用方式。
例如,在 meta 元素中寫入 Set-Cookie 或 Cache-Control,不能可靠地取代伺服器設定。
快取、Cookie 及其他伺服器層級行為,應使用真正的 HTTP 回應標頭。
重新導向與重新整理
meta refresh 可以要求前往另一個頁面:
<meta http-equiv="refresh" content="5; url=course.html">網頁已搬移時,應優先使用適當的 HTTP 重新導向。
定時重新整理及重新導向可能打斷閱讀、表單輸入及輔助技術操作。如果必須在 HTML 中提供導覽,應加入清晰可見的連結,並避免不必要的時間限制。
33.11 內容安全政策
網頁可以透過中繼資料提供部分內容安全政策(Content Security Policy,CSP)限制:
<meta
http-equiv="Content-Security-Policy"
content="default-src 'self'; object-src 'none'"
>不過,透過 meta 提供的政策具有重要限制:
- 不會追溯保護在它之前已處理的內容。
- 部分指令不支援這種形式。
frame-ancestors不能透過 meta 元素提供。- 不支援透過這種方式提供僅報告模式的 CSP。
如果能控制伺服器,應優先透過 HTTP 回應標頭提供 CSP。
完整政策必須符合應用程式的資源需要。直接複製限制嚴格的範例,可能令程式碼、樣式、字型或嵌入內容失效。
33.12 社交分享中繼資料
分享服務可能使用額外中繼資料建立預覽。
Open Graph 使用 property 屬性作為其中繼資料詞彙的一部分:
<meta property="og:title" content="無障礙 HTML 課程">
<meta
property="og:description"
content="學習建立清晰、符合無障礙需要的網頁。"
>
<meta property="og:type" content="website">
<meta property="og:url" content="https://example.com/course/">
<meta
property="og:image"
content="https://example.com/images/course-preview.png"
>
<meta
property="og:image:alt"
content="展示課程學習階段的示意圖"
>這裏的 property 屬於擴充的中繼資料慣例,不是 <meta> 的核心 HTML 專用屬性。
部分服務也識別 Twitter Card 中繼資料:
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="無障礙 HTML 課程">
<meta
name="twitter:description"
content="學習建立清晰、符合無障礙需要的網頁。"
>
<meta
name="twitter:image"
content="https://example.com/images/course-preview.png"
>以上例子使用佔位 URL。
實際網頁應:
- 使用公開可存取且適當的 URL。
- 遵守目標服務的圖片要求。
- 保持預覽文字與網頁內容一致。
- 留意服務可能快取預覽或忽略欄位。
分享中繼資料不會在自己的網頁內建立可見預覽。
33.13 使用 <link> 提供相關中繼資料
部分文件關係使用 <link>,而不是 <meta>:
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
<link rel="canonical" href="https://example.com/course/">
<link
rel="alternate"
hreflang="zh-Hant"
href="https://example.com/zh/course/"
>| 關係 | 用途 |
|---|---|
icon | 識別網站或網頁圖示 |
canonical | 建議等同內容的首選 URL |
配合 hreflang 的 alternate | 識別相關語言版本 |
canonical 連結是提示訊號,不是重新導向或存取限制。
同樣,替代語言連結不會翻譯網頁,也不會建立可見的語言選擇介面。
33.14 實用的 Head 區段
以下例子結合常見中繼資料。應將範例 URL 及描述替換為符合實際網頁的值。
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>無障礙 HTML 課程 | 網頁學習</title>
<meta
name="description"
content="透過實際例子學習 HTML 結構、表單、圖片及無障礙內容。"
>
<meta name="author" content="課程開發團隊">
<meta name="theme-color" content="#005ea8">
<meta name="referrer" content="strict-origin-when-cross-origin">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
<link rel="canonical" href="https://example.com/course/">
<meta property="og:type" content="website">
<meta property="og:title" content="無障礙 HTML 課程">
<meta
property="og:description"
content="透過實用課程學習建立清晰、符合無障礙需要的網頁。"
>
<meta property="og:url" content="https://example.com/course/">
<meta
property="og:image"
content="https://example.com/images/course-preview.png"
>
</head>這只是起點,不是必須全部完成的清單。
應因應網頁需要加入中繼資料,而不是只因範本包含它們。
33.15 常見錯誤
| 錯誤 | 較好的做法 |
|---|---|
| 太遲放置編碼宣告 | 放在 <head> 開頭附近 |
| 混淆編碼與語言 | 同時宣告 charset 及根元素 lang |
| 所有網頁使用相同標題 | 使用具描述性、針對特定網頁的標題 |
| 以為描述一定成為搜尋摘要 | 將它視為建議 |
| 不必要地限制縮放 | 保留使用者放大內容的能力 |
將 noindex 當成私隱保護 | 使用身分驗證及授權 |
使用 http-equiv 設定任意回應標頭 | 設定真正的伺服器標頭 |
| 依靠定時重新導向 | 優先使用 HTTP 重新導向及清晰連結 |
| 以為 meta CSP 支援所有指令 | 優先透過回應標頭提供 CSP |
| 在中繼資料發布敏感資訊 | 將中繼資料視為公開內容 |
| 沒有替換分享資料的佔位 URL | 使用真實、可存取的資源 URL |
| 期望中繼資料修復薄弱的網頁內容 | 改善可見內容及結構 |
本章總結: 中繼資料描述文件,並向瀏覽器及外部服務提供資訊。首先提供位於文件開頭附近的 UTF-8 宣告、有意義的標題及適當檢視區設定,再按需要加入描述、分享欄位及其他中繼資料。安全控制及伺服器層級行為仍應透過適當機制處理。















