2

私はこれを検索しようとしましたが、私はすでに答えを知っていると信じていますが、私が間違っていないことは非常に重要なので、ここに行きます..

を呼び出すときget_headersに、関数がヘッダーのみを返す場合でも、ファイル全体を取得しますか?それとも、期待どおりにヘッダーのみを取得し、他には何も取得しませんか?

私は最後を推測していますが、私が間違っていると、これはいくつかの深刻な問題を引き起こすでしょう..また、デフォルトのGETリクエストの代わりにHEADリクエストを送信するように変更できるグローバル設定があることに気付きました。本当に何が起こっているのか自分に尋ねます。


編集

たぶん、この機能はより良い代替手段ですか?stream_get_meta_dataまたは実際に同じことを行うのですか?

4

3 に答える 3

1

C に精通している場合は、ソース コードを確認することもできます。

関数はここで定義されます。これをざっと調べたところ、ヘッダーのみのリクエストのようです。715 行目を参照してください。

STREAM_ONLY_GET_HEADERS
于 2013-10-07T00:46:40.820 に答える
0

残念ながら、PHP のマニュアルを読んでください。

get_headers() は、HTTP 要求に応答してサーバーから送信されたヘッダーを含む配列を返します。

作例もご覧ください。

よし、次回は質問の構成にもっと注意を払うべきだ。

ええ、リクエスト タイプが GET (標準) に設定されている場合は、コンテンツ全体を取得します。HEAD に変更することもできますが、これは望ましくありません。

于 2013-10-06T23:02:25.190 に答える
0

得る

指定されたリソースの表現を要求します。GET を使用したリクエストは、データを取得するだけで、他の効果はありません。(これは、他のいくつかの HTTP メソッドにも当てはまります。) W3C は、この区別に関するガイダンス原則を公開しており、「Web アプリケーションの設計は、上記の原則だけでなく、関連する制限によっても通知される必要があります」と述べています。

GET 要求に対応するものと同じ応答を要求しますが、応答本文はありません。これは、コンテンツ全体を転送することなく、応答ヘッダーに書き込まれたメタ情報を取得するのに役立ちます。

ウィキペディア/Hypertext_Transfer_Protocol

PHP-docs には、通常get_headers()は GET リクエストを使用することが明確に記載されていますが、次のように、代わりに HEAD を使用するように強制できます。

<?php
// By default get_headers uses a GET request to fetch the headers. If you
// want to send a HEAD request instead, you can do so using a stream context:
stream_context_set_default(
    array(
        'http' => array(
            'method' => 'HEAD'
        )
    )
);
$headers = get_headers('http://example.com');
?>
于 2013-10-06T23:03:25.820 に答える