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