2012-08-01 7 views
7

HTTPリクエストで送信できるヘッダーがありますが、レスポンスでヘッダーのみを送信し、本文コンテンツは送信しないようWebサーバーに指示しますか?サーバーにヘッダーのみを返し、本文は返さないようにHTTPリクエストを送信しますか?

私はこのような要求をするためにcURLを使用していますが、技術的には単純なヘッダーを要求の一部として送信することが可能であると想定しています。

たとえば、304 Not Modified HTTP Response Codeが存在します。サーバーにキャッシュタグまたは日時情報を要求すると、サーバーはそれを検出し、ユーザーエージェントにキャッシュを応答として使用するように指示する応答としてヘッダーのみを返します。これは、帯域幅に関しては、サーバーからの応答が非常に小さいことを意味します。

しかし、サーバーに送信できるヘッダーはありますか?サーバーはヘッダーと本文を返すだけです。

ここでのアイデアは、そうでなければ大量のデータを返す可能性のあるHTTP要求を作成することです。 JSONデータやログを返すAPI呼び出しなど、実際にユーザーエージェントが興味を持っているのは、要求が完了したことだけです。これは、ボディが存在する可能性がある場合にサーバーとの間の帯域幅を最小限に抑えるためですが、ユーザーエージェントが何をしているのかとの関連で決して必要ではありません。

特定のカスタムヘッダーまたはその他のものをリッスンするAPIを設計することは可能ですが、必要がない限り、この方法を使用しないでください。しかし、サーバーに身体のコンテンツを送信しないように指示するHTTPリクエストを作成するための標準化された方法があるかどうかはわかりませんでしたか?

答えて

14

サーバーがサポートしている場合、(GETまたはPOSTとは対照的に)HEADアクションがあります。これは、ヘッダーだけを送信し、本文は送信しないようにサーバーに指示します。

HEADメソッドは、サーバーが応答内にメッセージ本体を返さなければならないことを除いて、GETと同じです。

2

あなたは動詞HEADを探しています。あなたはPHPとのCURLを使用している場合、これはトリックを行います:

curl_setopt($c, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($c, CURLOPT_CUSTOMREQUEST, 'HEAD'); 
curl_setopt($c, CURLOPT_HEADER, 1); 
curl_setopt($c, CURLOPT_NOBODY, true); 

あなたが(と、それは非常によく、また、異なる状況でカウントしてもよい)もののPHPを使用している場合、スクリプトがuntil any output is sent(実行し続けます注:REQUEST_METHOD)。だからもしあなたがサーバーのストレスを心配しているなら、それが合うなら別のものが必要かもしれません。

私には、「ping」を探しているように見えます。何もしないで、何らかの種類のOKを返すファイルを要求しないでください。おそらくHTTP 200 OK(空のファイル)?

+0

私はHEADリクエストを探していました。はい。私は主に、コンテンツの生成によるサーバーのストレスではなく、帯域幅を削減する方法を検討していました(私はこれを別の方法で扱います)。私はちょうど標準化された方法を探していました。しかし、ありがとう! – kingmaple

関連する問題