關於localhost和127.0.0.1的差異

Created: 2024/7/17
Updated: 2025/8/3

紀錄兩者間的差異


平常在本地開發時,我們經常會看到 localhost127.0.0.1 這兩個表示位址的方式。這兩者有什麼差異呢?

簡單的說,localhost是域名,127.0.0.1是ip地址。其中localhost能支持多級域名,並且是安全上下文(類似https),有些執行環境會要求使用安全上下文。

下面將分析兩者的特點。

1. 什麼是localhost?

localhost是一個域名,用於表示當前這台主機,也就是說如果我們在瀏覽器輸入localhost的話,他也會去查找hosts文件(瀏覽器有一套找尋hosts方法),並尋找localhost對應的IP地址,若沒有找到就會默認為127.0.0.1。

2. 什麼是127.0.0.1?

127.0.0.1是一個定義為回環地址(loopback address)的特殊IP,用來在通信傳輸時,他會指向本機,在瀏覽器中訪問時,會直接連接到本機上運行的服務。這個IP地址屬於127.0.0.0/8網段,這整個網段都被保留給回環接口使用,但通常我們只使用127.0.0.1這個地址。

當我們訪問127.0.0.1時,數據包不會真正離開你的電腦,而是在網絡協議棧內部直接回送到本機,這就是為什麼叫做"回環"地址的原因。

3. localhost vs 127.0.0.1 的差異

3.1 相同點

  • 都指向本機: 請求都是發送在自己的本機上
  • 無須網絡支持: 它們依賴並作用於本機的網絡協議棧,不需要實際的網絡連接。

3.2 差異點

特點localhost127.0.0.1
類型Domain Name(域名)IP Address(IP 地址)
解析過程需要經過 domain name resolution,系統會查找 hosts 文件或 DNS 獲取對應的 IP 地址。直接就是 IP address,無需解析過程,連接速度稍快。
可配置性可以在 hosts 文件中被重新配置,指向其他 IP address(如 127.0.0.2)。是固定的 loopback address,在標準協議上無法更改
IPv6 支援IPv6 環境下會解析為 ::1僅限於 IPv4 協議

4. 實際應用場景

4.1 服務測試

系統管理員常用127.0.0.1來測試本機服務是否正常運行,例如:

  • 測試web服務器: http://127.0.0.1:80
  • 測試數據庫連接: 127.0.0.1:3306 (MySQL)
  • 測試SSH服務: ssh user@127.0.0.1

4.2 安全性考量

由於回環地址只能在本機訪問,因此常被用作安全的測試環境,外部用戶無法直接訪問127.0.0.1上的服務。

安全上下文(Secure Context)

localhost 相較於 127.0.0.1 還有一個重要優勢:它被瀏覽器視為 安全上下文

安全上下文是瀏覽器定義的一個安全環境概念,只有在安全上下文中,某些敏感的 Web API 才能被使用。瀏覽器認為以下環境是安全上下文:

  • HTTPS 網站
  • localhost(包括其子域名,如 subdomain.localhost
  • 本地文件(file:// 協議)

需要安全上下文的 Web API

許多現代 Web API 要求在安全上下文中才能執行,例如:

  • Service Worker:離線緩存和推送通知
  • Web Crypto API:加密解密操作
  • Geolocation API:獲取地理位置
  • Media APIs:攝影機和麥克風訪問
  • Push Notifications:推送通知
  • Web Bluetooth/USB:硬體設備連接

開發建議

在本地開發時,建議優先使用 localhost

  • 確保所有現代 Web API 都能正常使用
  • 避免因安全上下文限制而產生的開發問題
  • 提供更接近生產環境(HTTPS)的測試條件

5. 常見問題

為什麼有時localhost無法訪問?

  1. hosts文件被修改: localhost可能被重新指向其他地址
  2. DNS解析問題: 系統無法正確解析localhost domain name
  3. 防火牆設置: 本地防火牆可能阻擋了對 loopback address 的連接

如何驗證localhost配置?

在命令行中使用以下命令:

# Linux/Mac
ping localhost
host localhost

當我們去ping localhost的時候,如果返回 ::1 ,代表解析為IPv6,如果返回 127.0.0.1 ,代表解析為IPv4。

6. 總結

localhost(域名)和 127.0.0.1(IP 地址)都是指向本機的方式。在日常使用中,兩者通常可以互換使用,但 localhost 由於其 Secure Context 的特性,在現代 Web 開發中更具優勢。了解它們的細微差異,有助於我們在遇到開發或網絡配置問題時,能快速地進行排查和解決。