17

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

私はcURLを使用してそのようなリクエストを行っていますが、技術的には、リクエストの一部として単純なヘッダーを送信することで可能になるはずです。

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

しかし、サーバーがヘッダーのみを返し、本文のコンテンツを返さないようにするサーバーに送信できるヘッダーはありますか?

ここでの考え方は、HTTPリクエストを作成することです。そうしないと、非常に少量の大量のデータが返される可能性があります。JSONデータやログを返すAPI呼び出しなど、実際にユーザーエージェントが関心を持っているのは、リクエストが通過したことを確認することだけです。これは、本体が存在する可能性がある場合にサーバーとの間の帯域幅を最小化するためですが、ユーザーエージェントが実行していることとの関連ではまったく必要ありません。

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

4

2 に答える 2

27

サーバーがそれをサポートしている場合は、HEADアクションがあります(GETまたはPOSTではありません)。これは、サーバーにヘッダーのみを送信し、本文は送信しないように指示します。

HEADメソッドはGETと同じですが、サーバーが応答でメッセージ本文を返さないようにする必要があります。

于 2012-08-01T07:30:28.163 に答える
4

あなたは動詞を探しています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を使用している場合(さまざまな状況でもカウントされる可能性があります)、出力が送信されるまでスクリプトは実行され続けます(下の注REQUEST_METHOD)。したがって、サーバーのストレスが心配な場合は、それが適切であれば、別の何かが必要になる可能性があります。

私には、「ping」を探しているように見えるので、何らかのOKを返すだけのファイル、おそらくHTTP 200 OK(つまり空のファイル)を返すだけのファイルを要求してみませんか?

于 2012-08-01T07:30:08.053 に答える