如何修復 HTTP 狀態 204(無內容)錯誤?

已發表: 2024-01-26

目錄
HTTP 204 是什麼意思?
HTTP 204 回應代碼 參考
如何解決 HTTP 204 問題?
HTTP 204 無內容對 SEO 的影響
HTTP 204 No Content 回應代碼的一些使用場景
HTTP 204 與 200 之間的區別
HTTP 204 與 404 之間的區別
結論
經常問的問題

HTTP 204 是什麼意思?

HTTP 204 無內容回應代碼表示伺服器已完成其工作,完成了客戶端發送的請求,但伺服器沒有找到任何內容可傳送回客戶端。

換句話說,您可以將其理解為伺服器已完成請求,但伺服器沒有任何資訊可傳回,客戶端無需離開當前頁面。

注意預設情況下,HTTP 204 狀態代碼被認為是可快取的,這表示代理伺服器和用戶端可以自由快取回應。 此外,在這種情況下,伺服器可以包括Etag標頭。

在某些情況下,您可能想要覆寫此預設行為,在這方面,您可以在回應中包含其他 HTTP 快取標頭。


HTTP 204 回應代碼 參考

  • Rails HTTP 狀態符號:no_content
  • Rust http::StatusCode::NO_CONTENT
  • Symfony HTTP 狀態常數回應::HTTP_NO_CONTENT
  • Go HTTP 狀態常數 http.StatusNoContent
  • Python3.5+ HTTP 狀態常數 http.HTTPStatus.NO_CONTENT
  • .NET HttpStatusCode.NoContent
  • Java java.net.HttpURLConnection.HTTP_NO_CONTENT
  • Apache HttpComponents 核心 org.apache.hc.core5.http.HttpStatus.SC_NO_CONTENT
  • 角度@angular/common/http/HttpStatusCode.NoContent

如何解決 HTTP 204 問題?

但是,HTTP 204 狀態代碼不是錯誤,而是有意實現的,以顯示伺服器已處理客戶端請求但沒有內容可返回的請求成功。

但有時它可能會無意中突然觸發,或者您可能會在不合適的情況下看到它。 為了解決這種情況,您應該考慮以下一些必要的方法。

1. 檢查伺服器配置

如果您的伺服器設定錯誤,可能會導致意外的 HTTP 204 回應。 因此,您需要檢查您的伺服器配置,尤其是那些與處理 HTTP 回應相關的配置是否正確符合您的應用程式的要求。

另外,請考慮檢查伺服器錯誤日誌以取得深入的詳細資訊。

2.使用SEO工具

由於我們已經討論過,如果URL 返回HTTP 204 響應代碼,搜尋引擎將不會對其進行索引,因此您可以使用各種SEO 工具(例如SEMRUSH 或Screamfrog)來找出網站上無意的HTTP 204 響應代碼,並確保頁面返回 HTTP 200。

3. 檢查您的應用程式邏輯

確保您的應用程式邏輯更好地符合 HTTP 204 的適當用例。它應該符合顯示此特定狀態碼的目的。

檢查邏輯是否正確; 例如,如果內容是預期的但顯示了 HTTP 204,請調查發生這種情況的原因。 此外,不斷完善應用程式以獲得最佳用戶體驗。

4. 將使用者重新導向至內容頁面

如果您正在考慮刪除內容或項目,並且它會向使用者傳回 HTTP 204 回應代碼,則可能會對他們產生負面影響。 用戶可能會感到困惑,這最終會降低網站的整體用戶體驗。 從 SEO 的角度來看,這是一件非常糟糕的事。

與其向使用者顯示 204 個回應代碼,不如將他們重新導向到更有用的頁面或在同一頁上傳達明確的訊息。

5. 調查 API 或 AJAX 請求

如果您正在處理 API 或 AJAX 請求,請確保用戶端和伺服器的期望一致。

如果用戶端期望內容但收到 HTTP 204,請檢查它是否是故意完成的或有問題。

6. 確保使用適當的狀態代碼

有時,由於某種混亂或缺乏 HTTP 狀態碼知識,您可能會針對不同的場景使用不同的程式碼。 例如,如果客戶端需要內容,請將其設定為 200 OK 或其他適當的程式碼,而不是使用 204 No Content。

7.日誌記錄和監控

嘗試對 204 回應實施日誌記錄和監控。 這是因為它可以為您提供有關 Web 應用程式行為的寶貴見解。

它還可以幫助您識別模式、發現潛在問題,並幫助您改善效能和使用者體驗。

8.查閱文檔

此外,您也可以檢視您使用的服務、框架或程式庫的文件。 只要仔細看一下,看看是否有提到與204相關的最佳實踐的特殊考慮。

不要忘記,只有在無意中才可以採取適當的操作,而且這也取決於應用程式的特定上下文。


HTTP 204 無內容對 SEO 的影響

您還需要了解 HTTP 204 對 SEO 有何影響。 看一下這個:

1. 索引問題:由於Http 204不提供索引內容。 如果您嘗試對 URL 建立索引,則可能會導致問題。

2.浪費抓取預算:您可能會驚訝地發現每個搜尋引擎都會為每個網站分配抓取預算。 如果搜尋引擎機器人無法找到任何內容來重複索引,則會向他們發出負面信號,並可能進一步減少您的抓取預算。

3.使用者體驗不佳:由於使用者體驗也是SEO的主要因素,因此遇到HTTP 204可能會對其產生負面影響。 期待內容的用戶可能會離開網站,增加跳出率並向搜尋引擎發送負面訊號。

4.不良配置錯誤:伺服器也可能無意中配置不當,導致關鍵頁面無法建立索引或排名。


HTTP 204 No Content 回應代碼的一些使用場景

那麼,您可能還想知道,如果 HTTP 204 回應是故意的,那麼它可能的使用場景是什麼? 好吧,請查看以下案例,供您參考:

1.用例:刪除請求

為了更好地理解這裡,您需要考慮一個例子,

要求

DELETE https://domain.com/user/666 HTTP/1.1
Host: domain.com
Authorization: Bearer

回覆

HTTP/1.1 204 No Content
Date: Tue, 16 Jan 2024 12:00:00 GMT
Server: nginx

從上面的範例可以看到,客戶端發送了一個DELETE請求,並且已經成功處理,表示刪除了domain.com伺服器上ID為666的使用者資源,伺服器回傳了狀態碼204。

2. 使用案例:POST 請求

要求:

POST /job HTTP/1.1
Host: www.domain.re
Content-Type: application/xml
Content-Length: 60
<?xml version="1.0">
<job>
<id>125</id>
<task>G01</task>
</job>

回覆:

HTTP/1.1 204 No Content

在上面的範例中,您可以看到用戶端向伺服器發送了對 XML 資料的請求,並且還定義了需要完成的作業。 作為回應,伺服器確認請求並完成作業。

但是,無需將任何內容發送回客戶端; 因此,使用 204 無內容狀態代碼。

3. 用例:PUT 請求

假設您正在使用 CMS,您需要在網站上的文章中進行更新。 為此,您必須傳送 PUT 請求來更新現有文章的 ID 123 的內容。 請求負載包括 JSON 格式的更新標題和內容。

要求:

PUT /api/articles/123
Content-Type: application/json{
"title": "Updated Title",
"content": "Updated content for the article."
}

回覆:

HTTP/1.1 204 No Content
Date: Sat, 01 Jan 2024 12:00:00 GMT

在這方面,伺服器將處理請求並成功更新文章,但根據應用程式的設計,伺服器不會回應傳統的成功訊息,而是回應 204 無內容狀態代碼。

類似地,HTTP 204 也可用於控制快取行為以及包含 HTTP 標頭欄位。


HTTP 204 與 200 之間的區別

許多人可能會混淆 HTTP 204 和 HTTP 200 回應代碼,並最終使用不適當的程式碼。 因此,下面給出了一個最終的比較表,以澄清您對此的疑慮。

方面HTTP 204 無內容HTTP 200 正常
定義伺服器成功處理了請求,但回應正文中沒有要傳送的內容。 請求成功,伺服器已傳回請求的資料。
響應體回應正文中不包含任何內容。 回應通常包含數據,例如 HTML、JSON 或 XML,具體取決於請求。
使用案例在確認不需要在回應中傳輸資料的成功請求時使用。 用於伺服器傳回資料以滿足客戶端請求的成功請求。
快取該響應不打算被緩存。 可以根據伺服器提供的快取標頭來快取回應。
客戶行動不需要客戶端操作,僅用於確認客戶端。 客戶端可以處理接收到的資料或根據回應採取進一步的操作。
例子不需要發送其他資料的 DELETE 請求。
不需要回應正文的成功更新。
網頁載入成功。 從資料庫中檢索使用者詳細資訊。
通用標頭內容類型:不適用(無內容)。 Cache-Control:No-cache,no-store(建議不快取)。 Content-Type:指定回應體中資料的媒體類型。
快取控制:這可能包括快取指令。
重定向通常,不需要重定向。 如果伺服器或資源已移動(例如,使用 3xx 狀態代碼),則可能會發生重新導向。
HTTP 204 與 200

同樣,您可能會對 HTTP 204 和 404 回應代碼感到困惑。 請查看下面的比較表以了解這方面的說明。


HTTP 204 與 404 之間的區別

方面HTTP 204 無內容HTTP 404 找不到
定義伺服器成功處理了請求,但回應正文中沒有要傳送的內容。 在伺服器上找不到所要求的資源。
響應體回應正文中不包含任何內容。 回應正文可能包含一條用戶友好的訊息,解釋所要求的資源不存在。
使用案例在確認不需要在回應中傳輸資料的成功請求時使用。 用於指示所請求的資源不可用或伺服器上不存在。
客戶行動客戶端會被告知請求已成功,但無需採取進一步操作。 客戶端可以採取適當的操作,例如通知使用者、重新導向或嘗試替代請求。
例子不需要發送其他資料的 DELETE 請求。
不需要回應正文的成功更新。
嘗試存取不存在的 URL。
查詢已刪除或從未存在的資源。
通用標頭內容類型:不適用(無內容)。
Cache-Control:No-cache,no-store(建議不快取)。
Content-Type:取決於伺服器的設定。
Cache-Control:如果在後續請求中找不到資源,這可能指示不快取。
重定向通常,不需要重定向。 如果伺服器或資源已移動(例如,使用 3xx 狀態代碼),則可能會發生重新導向。
HTTP 204 與 404

閱讀:如何修復 WordPress 網站和 Android 的 404 未找到錯誤?


結論

與其他 HTTP 錯誤代碼不同,HTTP 204 no content 只是一個回應代碼,表示伺服器已成功處理請求,但回應中沒有內容可顯示。

它可能聽起來類似於 404 錯誤未找到錯誤,但它完全不同並且具有不同的使用場景。 但無論如何,如果它被誤用或配置錯誤,不要忘記它也可能損害您的 SEO。


經常問的問題

HTTP 204 是什麼意思?

HTTP 204 無內容回應代碼表示伺服器已完成其工作,完成了客戶端發送的請求,但伺服器沒有找到任何內容可傳送回客戶端。

HTTP 304 和 204 有什麼不同?

而狀態碼304和204都表示響應體中沒有發送新內容的情況。 HTTP 304 則較著重於快取和條件請求,而 HTTP 204 一般指示成功處理,無需附加內容。

什麼是204代碼刪除?

204 No Content DELETE 狀態表示伺服器已成功處理刪除資源的請求,但回應正文中沒有要傳送的其他內容。 表示刪除成功,回應中不需要傳回任何資料。