讓 PHP 的 cURL 使用指定的 HTTP 版本

前言

這個年頭的 HTTP 版本有非常多,令人眼花撩亂。如果你正使用 PHP 的 cURL 發送要求,同時又必須設定 HTTP Version,那也許這篇文章能幫到你。

操作方式

你可以使用以下參數讓 cURL 使用你指定的 HTTP 版本:

<?php
    # 讓 cURL 自動判斷合適的版本
    curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_NONE);
    #  HTTP 1.0
    curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
    #  HTTP 1.1
    curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    #  HTTP 2
    curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
    #  HTTP 3
    curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_3);
?>

放在一個 cURL 陣列可能是長這樣的(範例使用 cURL 自動):

<?php

    $curl = curl_init();

    curl_setopt_array($curl, array(
      CURLOPT_URL => 'https://www.google.com',
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => '',
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 0,
      CURLOPT_FOLLOWLOCATION => true,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_NONE,
      CURLOPT_CUSTOMREQUEST => 'GET',
      CURLOPT_HTTPHEADER => array(),
    ));

    $response = curl_exec($curl);
    curl_close($curl);
    echo $response;
?>

這樣你就可以使你的 cURL 使用你指定的 HTTP Version 發出請求囉!