What is the easiest way to use the HEAD command of HTTP in PHP?

前端 未结 5 607
轻奢々
轻奢々 2020-12-03 11:31

I would like to send the HEAD command of the Hypertext Transfer Protocol to a server in PHP to retrieve the header, but not the content or a URL. How do I do this in an effi

相关标签:
5条回答
  • 2020-12-03 11:46

    Even easier than curl - just use the PHPget_headers()function which returns an array of all header info for any URL you specify. And another real easy way to check for remote file existence is to usefopen()and try to open the URL in read mode (you'll need to enable allow_url_fopen for this).

    Just check out the PHP manual for these functions, it's all in there.

    0 讨论(0)
  • 2020-12-03 11:48

    As an alternative to curl you can use the http context options to set the request method to HEAD. Then open a (http wrapper) stream with these options and fetch the meta data.

    $context  = stream_context_create(array('http' =>array('method'=>'HEAD')));
    $fd = fopen('http://php.net', 'rb', false, $context);
    var_dump(stream_get_meta_data($fd));
    fclose($fd);
    

    see also:
    http://docs.php.net/stream_get_meta_data
    http://docs.php.net/context.http

    0 讨论(0)
  • 2020-12-03 11:55

    It seems like pear has it:

    http://pear.php.net/manual/en/package.http.http.head.php

    0 讨论(0)
  • 2020-12-03 11:55

    Use can use Guzzle Client, it use CURL library but more simple and optimized.

    installation:

    composer require guzzlehttp/guzzle
    

    example in your case:

    // create guzzle object
    $client = new \GuzzleHttp\Client();
    
    // send request
    $response = $client->head("https://example.com");
    
    // extract headers from response
    $headers = $response->getHeaders();
    

    Fast and easy.

    Read more here

    0 讨论(0)
  • 2020-12-03 11:56

    You can do this neatly with cURL:

    <?php
    // create a new cURL resource
    $ch = curl_init();
    
    // set URL and other appropriate options
    curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
    
    // This changes the request method to HEAD
    curl_setopt($ch, CURLOPT_NOBODY, true);
    
    // grab URL and pass it to the browser
    curl_exec($ch);
    
    // Edit: Fetch the HTTP-code (cred: @GZipp)
    $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    
    // close cURL resource, and free up system resources
    curl_close($ch);
    
    0 讨论(0)
提交回复
热议问题