色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

php getheaders https

林雅南1年前7瀏覽0評論

在網絡傳輸過程中,信息的安全性是一直以來被關注的重點之一。加密協議是保證網絡傳輸過程中信息安全性的重要手段,其中HTTPS協議是互聯網中應用最廣泛的一種加密協議。而在PHP中,使用get_headers()函數獲取HTTPS網址的響應頭信息時,需要注意的問題也是非常重要的。

舉個例子,現在我們需要獲取鏈接為https://www.baidu.com的網站響應頭信息:

$headers = get_headers("https://www.baidu.com");
print_r($headers);

在不使用SSL證書的情況下,會返回如下錯誤信息:

PHP Warning:  get_headers(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in xxx.php on line xx

這個錯誤發生的原因是因為PHP默認情況下不信任SSL證書頒發的機構,而在訪問HTTPS協議的網站時,會對SSL證書的合法性進行驗證,如果驗證不通過則返回上述錯誤。

正確的做法是使用CURL庫來獲取HTTPS網頁內容,示例代碼如下:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.baidu.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$data = curl_exec($ch);
$headers = substr($data, 0, curl_getinfo($ch, CURLINFO_HEADER_SIZE));
curl_close($ch);
print_r($headers);

在使用CURL庫的時候,需要設置CURLOPT_SSL_VERIFYPEER和CURLOPT_SSL_VERIFYHOST兩個選項,以跳過SSL驗證過程。

除了使用CURL庫來獲取HTTPS網頁內容,還可以通過給openssl.cafile或openssl.capath參數設置證書文件路徑,來讓PHP信任SSL證書頒發的機構,示例代碼如下:

$opts = [
"ssl" =>[
"verify_peer"=>true,
"peer_name"=>"www.baidu.com",
"cafile"=>"/path/to/ca-bundle.pem"
]
];
$context = stream_context_create($opts);
$headers = get_headers("https://www.baidu.com", 1, $context);
print_r($headers);

最后,需要注意的是,使用get_headers()函數獲取HTTPS網址的響應頭信息時,需要滿足以下條件:

  • PHP版本大于等于5.2.0。
  • 需要開啟php_openssl擴展。
  • 需要在php.ini或者運行時使用ini_set()函數設置“allow_url_fopen”選項為1。

因為HTTPS協議的特殊性,獲取HTTPS網址的響應頭信息需要滿足一定的條件,否則會產生錯誤。希望本文的描述對各位讀者能夠有所幫助。