HTTPの隠された機能


85

HTTPのどの隠された機能に言及する価値があると思いますか?

隠された機能とは、すでに標準の一部であるが、広く知られていないか、使用されていない機能を意味します。

回答ごとに1つの機能のみをお願いします。

回答:


124

Hyper Text Coffee Pot Control Protocol(HTTPの拡張機能)の一部である、ティーポットのステータスコードである418である必要があります。毎回笑わせてくれます。

2.3.2418私はティーポットです

ティーポットでコーヒーを淹れると、エラーコード「418I'mateapot」が表示されます。結果として得られるエンティティ本体は、短くて頑丈な場合があります。


6
すごいです!
Josh

3
私は実際に、他のステータスが適切でない場合に備えて、このステータスをスクリプトに実装しました。
まぶたのない2010年

4
RFCから:「結果のエンティティ本体は短くて頑丈な場合があります。」
Piskvorは、2010

2
私は自分のHTTPサーバーを作成し、これを実装するようにしました。
マットジョイナー2010

これは、コーヒーマシンにコマンドを送信するために作成した実際のプロトコルではありませんでした。どこかで読んだと思います。-彼らはこのプロトコルを介してコマンドを受け入れるコーヒーマシンを構築したので、実際にはその正当なプロトコル
RobertPitt 2010


42

明白な答え:PUT、DELETE、TRACE、OPTIONS、CONNECTメソッド

ほとんどの人は、GETメソッドとPOSTメソッドについて知っています。これは、フォームを作成するときに使用するためです。ブラウザもHEADをよく使用します。他の方法はあまり知られていません。これらは主に、より具体的なアプリケーションで使用されます。


1
いい答えです。すべての方法について詳しく教えていただけますか?
Louis


1
不幸なことに、これらのメソッドをサポートしているブラウザはいくつありますか?(私は知っています、それは残念です)
パスカルQyy 2010年

なぜ誰もがこれらのリストにPATCHを含めないのですか?
tobib 2014

29

402 Payment Requiredを見たことがありますか?


17
はい。HTTP <-> SMSゲートウェイ内。プリペイドクレジットが不足すると、402件の回答が得られるようになります。
Kornel

26
@ zildjohn01:つまり...劇的な一時停止...私たちが未来に生きているということです!;)
Piskvorは2010

6
@Piskvor:素晴らしい観察。また、私はこの未来を拒否し、それは哀れなソフトウェアスタックであることも指摘しておきます。
マットジョイナー2010

3
「未来はすでにここにあります、それはただ均等に分配されていません。」
XTL 2012

25

204コンテンツなし

204は表示するコンテンツがない場合だけだと思いましたが、仕様には、ユーザーエージェントが「ドキュメントビューを変更しない」という追加の動作があるようです。

HOWTOによると:AJAXのHTTP 204(コンテンツなし)を返すようにApacheを構成する

FWIW、Googleは実際に似たようなことをします。ユーザーが検索結果のリンクをクリックするたびに、Googleは自分自身にpingを送信してクリックを記録します。pingからの応答コードはHTTP204です。

また、204 No Contentは、ネットワークトラフィックの最後のバイトをすべて節約したい場合に、これが「Webバグ」または「ビーコン」に適した手法であることを提案しています。


17

応答コード410 Gone

(...)サーバーの所有者は、そのリソースへのリモートリンクを削除することを望んでいます。(...)

Webスパイダー(特にGoogle)は、410を返し始めるページのインデックスを解除します(通常は次のクロール時に)。


16

動的コンテンツでは、Last_ModifiedまたはETagヘッダーを使用します

場合によっては、生成するのに大きくてコストがかかる可能性があり、リクエストごとに変更されない可能性がある動的コンテンツがあります。生成された応答にLast_ModifiedまたはETagヘッダーを追加できます。

高価な動的コードの上部で、If_Modified_SinceまたはIf_None_Matchを使用して、コンテンツリクエスターが既に持っているコンテンツがまだ最新であるかどうかを判断できます。応答ステータスを「304Unmodified」に変更し、リクエストを終了します。

一部のサーバーサイドテクノロジーは、このような機能を正式に提供しますが、ASPクラシックが低い場合でも上記を実行できます。

これは、クライアントが要求に応じて常に最新の情報を確実に取得できるという点で、Cache-Control、Expiresヘッダーの設定とは異なることに注意してください。


13

あなたはして要求することができ再開(大)HTTPレスポンス(ファイルのダウンロード)を使用Rangeし、If-Rangeそれぞれ指定されたバイト範囲とユニークなファイル識別子やファイルの変更のタイムスタンプとリクエストヘッダを。これは、サーバーが最初の応答で、Accept-Ranges: bytesおよびETag/またはLast-Modified応答ヘッダーを送信し、サーバーがバイト範囲要求をサポートしているという通知、一意のファイルID、およびファイル変更タイムスタンプをそれぞれ送信した場合に可能です。

最初の応答は次のようになります(ETag通常、ファイル名、サイズ、および最終変更のタイムスタンプで構成されます)。

Accept-Ranges: bytes
ETag: file.ext_1234_1234567890
Content-Range: bytes 0-1233/1234

たとえば1KB(1024バイト)でダウンロードが中止された場合、クライアントは次のようにダウンロードを再開できます。

If-Range: file.ext_1234_1234567890
Range: bytes=1024-

これは、本文に適切なバイトを含むこの応答を返す必要があります。

Accept-Ranges: bytes
ETag: file.ext_1234_1234567890
Content-Range: bytes 1024-1233/1234

1Mbyte = 1024 kbytes、1kbyte = 1024バイト、つまり1Mbyte = 1024 * 1024バイト
Maerlyn 2010年

12

ReSTは、インターフェイスプロトコルとしてHTTPを限界まで押し込もうとします。

これは隠された機能ではありませんが、明確に定義されたReST APIを見ると、HTTPがどのように機能するかを非常によく把握し、HTTPメソッド、ステータスコード、ヘッダーの単純な組み合わせで実現できることのすばらしい例を見つけることができます。前後に。



8

このプロトコルを使用すると、独自のカスタムフィールドを定義できます。Cookieを使用したくない場合は、これらを使用して他の情報を伝達できます。


1
私は確かにそれを知りませんでした!
netrox 2012

6

HTTP 100(続行)ステータス

クライアントは、リクエスト本文を含むリクエストメッセージを送信して、オリジンサーバーがリクエストを受け入れる意思があるかどうかを判断できます。

場合によっては、サーバーが本文を見ずにメッセージを拒否する場合、クライアントが本文を送信することは不適切または非常に非効率的である可能性があります

不正なクライアントからのトラフィック回避するために使用できます。および/または帯域幅が貴重な商品である場合。

ただし、この機能を最大限に活用するには、HTTP1.1クライアント、サーバー、およびプロキシにいくつかの基準があります。HTTP接続の詳細については、HTTP / 1.1 RFC2616を参照してください。


3

ステータスコード

  • URI http://www.domain.invalid/index.php?id=44が呼び出されたときに、クエリid=44)がリソースを返すことができなかった場合は、ステータスコードを返さないのはなぜ404ですか?
  • ときにURIが http://www.domain.invalid/index.php?id=foo一方呼ばれるid整数のみを受け付け、なぜステータスコードを返しませんか400
  • なぜ、間違ったログイン/パスワードを入力すると、ほとんどすべてのWebアプリケーションが「認証に失敗しました」のようなメッセージをステータスコード200(OK、問題ありません、うまくいきます)で返し401ますか?

はい、ステータスコードは一部のWeb開発者にとってHTTPの一種の秘密の機能のようです...しかし、このプロトコルのすべての「機能」の中で最もオカルトなのはRFCではないのではないかと思います


2
401HTTP認証専用で、他の種類のものではないと思います。Afaikを使用すると、ほとんどのブラウザがユーザーにhttpパスワードを要求します。
CodesInChaos 2010年

そうです、これがポイントです!HTTPの他の「隠された」機能は次のとおりHTTP-Authenticationです。...^^車輪の再発明の代わりにそれを使用するのはとても難しいですか?
パスカルQyy 2010年

1
@G。Qyy:Webアプリケーションの場合、ユーザーデータベースが簡単に操作できるSQLデータベースに格納されているか、Apacheの.htaccessファイルなどの(かなり静的な)Webサーバー構成ファイルに格納されているかによって大きな違いが生じます。ウェブマスターは更新できます。したがって、HTTP認証は、実際にはアプリケーションのユーザー権限とログイン/ログオフの管理にはあまり適していません。
stakx -もはや寄与していない

4
@stakx:MySQL(howtoforge.com/mod_auth_mysql_apache2_debian)、LDAPなどを使用して情報を保存するのは簡単です。PHPHTTP-Authenticationでも処理できますHTTP-Authenticationphp.net/manual/en/features.http-auth.php)。Web開発者の場合は、安全上の理由から、サーバー管理の基本を習得する必要があります。Web開発者は、Webマスター/システム管理者のスキルを持っている必要があるため、このタスクを簡単に実行できます。
パスカルQyy 2010年

1
しかし、とにかくこれは私の答えではありません。私にとっての主な問題は、HTTP認証は別としても、Webアプリによって返されるほぼ体系的な不正確なステータスコードのままです。
パスカルQyy 2010年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.