622 字
3 分鐘

Astro 遠端圖片怎麼設白名單:用 domains 與 remotePatterns 縮小來源範圍

把 CMS、CDN 或外部 API 回傳的圖片直接放進 Astro,最容易被忽略的不是網址能否顯示,而是圖片最佳化的來源規則。Astro 可用 image.domainsimage.remotePatterns 授權遠端來源;前者適合完整信任單一 host,後者適合把 protocol、host 或路徑收窄。

直接答案是:來源固定且整個網域都可信時用 domains;只允許特定 HTTPS host 或路徑時用 remotePatterns。不要以「任何 HTTPS」取代真正的來源盤點。

先確認你需要的是顯示,還是 Astro 最佳化#

一般 <img> 或 Markdown 圖片可使用完整遠端 URL;但若要讓 Astro 對遠端來源進行圖片最佳化,需要在設定中授權該來源。即使來源沒有被最佳化,使用 <Image /> 仍可透過明確尺寸協助避免 Cumulative Layout Shift;這兩件事不要混為一談。

固定來源用 domains#

如果文章封面只會來自同一個可信任 CDN host,可採最小清單:

astro.config.mjs
export default defineConfig({
image: {
domains: ['images.example-cdn.com'],
},
});

這個設定表達的是「這個 host 的遠端圖可以交給 Astro 處理」,不是讓所有外部 URL 都變成可信資料。新增另一個 CMS 前,應重新確認它的實際 image host,而不是把主網域或萬用子網域直接放大。

需要限制 protocol 或路徑時用 remotePatterns#

當同一個 host 同時承載可控與不可控內容,或只想允許 HTTPS,使用 pattern 比列網域更清楚:

export default defineConfig({
image: {
remotePatterns: [
{
protocol: 'https',
hostname: 'images.example-cdn.com',
pathname: '/posts/**',
},
],
},
});

官方範例也可只以 protocol: 'https' 限制,但那是很寬的規則,適合的情況遠少於已知 CDN host。若圖片 URL 是使用者可輸入或由第三方資料帶入,應先在應用程式端驗證來源;Astro 的設定是額外防線,不是內容審核器。

建置前後檢查三件事#

  1. 列出實際圖片 URL,確認 host、協定與路徑都符合設定。
  2. 執行 pnpm build,讓內容集合與圖片處理在正式建置中被驗證。
  3. 在頁面確認圖片尺寸或 <Image /> 的 width/height 資訊,避免圖片載入後才推動版面。

若你是在維護文章 sitemap,也應把圖片來源設定和內容發布流程一起覆核;但它和 URL 是否該送進搜尋引擎是不同問題,可另參考 Astro Sitemap 的 noindex 與 filter 設定

參考資料:

Astro Docs:Images

Astro 遠端圖片怎麼設白名單:用 domains 與 remotePatterns 縮小來源範圍
https://laplusda.com/posts/astro-remote-images-allowlist/
作者
Zero
發佈於
2026-07-28
許可協議
CC BY-NC-SA 4.0
這篇文章有幫助嗎?

回報錯字、失效連結,或告訴我你想看的延伸主題。