HTTPQUERY
日本語

510 Not Extended

使い方

510 Not Extended ステータスコードは HTTP Extension Framework の一部です。IANA は現在 510 を「Not Extended (OBSOLETED)」として掲載しており、その仕様は Historic ステータスへ移されています。つまり、このプロトコルはもはや使用が推奨されていません。

このエラーは、クライアントが拡張された HTTP リクエストを使うことを求められているにもかかわらず、そうしていない場合に発生します。サーバーのレスポンスにはリクエストを拡張する方法に関する情報が含まれますが、正確な形式はプロトコルで規定されていません。

SEO への影響

検索エンジンは 510 を他の 5xx サーバーエラーと同じように扱います。障害が継続するとクロール頻度が低下し、最終的に該当する URL がインデックスから削除されます。

例

クライアントが、必須の HTTP 拡張を要するリクエストを送信します。リクエストに必要な M- 接頭辞と拡張の宣言が含まれていないため、サーバーは 510 Not Extended で応答します。

リクエスト

GET /resource HTTP/1.1
Host: example.com

レスポンス

HTTP/1.1 510 Not Extended
Content-Type: text/html; charset=UTF-8
Content-Length: 199

<html>
  <head>
    <title>Not Extended</title>
  </head>
  <body>
    <p>The request requires a mandatory HTTP
    extension. Resubmit with the required
    extension headers.</p>
  </body>
</html>

対処方法

サーバーは、クライアントがリクエストに含めなかった HTTP 拡張を必要としています。510 レスポンスのボディに、どの拡張が必要かが記述されています。

クライアント側:

サーバー側:

このステータスコードを実際に目にすることはほとんどありません。HTTP Extension Framework は Historic ステータスへ移され、採用はほぼ皆無です。現代のほとんどの API や Web アプリケーションは、Extension Framework の仕組みではなく、カスタムヘッダー、クエリパラメーター、API のバージョニングを通じて機能のネゴシエーションを行っています。

Service Worker における 510

フェッチリクエストを傍受する Service Worker は、オリジンが要求する拡張や機能をワーカーが備えていない場合に 510 を表面化させることがあります。対処は同じで、レスポンスボディで不足している拡張を確認し、必要なヘッダーを含めるよう Service Worker の fetch ハンドラーを更新します。

コードリファレンス

.NET

HttpStatusCode.NotExtended

Rust

http::StatusCode::NOT_EXTENDED

Rails

:not_extended

Go

http.StatusNotExtended

Symfony

Response::HTTP_NOT_EXTENDED

Python3.5+

http.HTTPStatus.NOT_EXTENDED

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_NOT_EXTENDED

Angular

@angular/common/http/HttpStatusCode.NotExtended