意義
資源有多種表示(語言、格式),需要用戶端或使用者選擇其一。伺服器可透過 Location 建議首選。
常見原因
- 內容協商無法在多個變體中做出選擇
- 伺服器列出替代的格式或語言
解決方法
用戶端或訪客
有 Location 就跟隨它,否則從列出的連結中選擇。瀏覽器不會自動選擇。
網站或 API 的維護者
優先使用伺服器端協商(Accept、Accept-Language),直接以 200 回傳最符合的版本;300 很少是最好的使用者體驗。
回應範例
HTTP/1.1
HTTP/1.1 300 Multiple Choices
Date: Tue, 07 Oct 2025 09:30:00 GMT
Server: nginx
Link: </doc.en.html>; rel=alternate; hreflang=en
Link: </doc.de.html>; rel=alternate; hreflang=de
Content-Length: 0 規範
常見問題
› 瀏覽器會自動跟隨 300 嗎?
如果有 Location 標頭,部分瀏覽器會跟隨;否則使用者會看到帶選項的頁面本文。
› 多語系網站適合用 300 嗎?
通常不適合。改用 302 重新導向,或直接提供正確語言並加上 hreflang 連結。