php - php curl标头不从网站返回?
问题描述
我使用此命令从该特定页面获取标题。
curl -I https://www.gearbest.com/mobile-phones/pp_1686789.html?wid=1817324
我从终端运行上述命令,我得到了这些结果......
HTTP/2 200
content-type: text/html; charset=UTF-8
pragma: public
last-modified: Fri, 02 Nov 2018 18:15:13 GMT
gbcdnlang: en
access-control-allow-origin: *
access-control-allow-methods: GET, POST
ng-cache: HIT
x-edgeconnect-midmile-rtt: 36
x-edgeconnect-origin-mex-latency: 137
cache-control: public, max-age=60
expires: Fri, 02 Nov 2018 23:39:15 GMT
date: Fri, 02 Nov 2018 23:38:15 GMT
set-cookie: ORIGINDC=3;Domain=.gearbest.com;Path=/
set-cookie: ORIGINDCPC=3;Domain=.gearbest.com;Path=/
set-cookie: AKAM_CLIENTID=d51abedb38c60f8a5217ae15808769fc; expires=Mon, 31-Dec-2038 23:59:59 GMT; path=/; domain=.gearbest.com
vary: User-Agent
到目前为止,一切都很好。但是当我尝试使用下面的代码在 php 中实现时,我得到“URL 不存在”!我究竟做错了什么?任何帮助表示赞赏。
$url1 = "https://www.gearbest.com/mobile-phones/pp_1686789.html?wid=1817324";
$curl1 = curl_init($url1);
curl_setopt($curl1, CURLOPT_NOBODY, true);
curl_setopt($curl1, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($curl1, CURLOPT_TIMEOUT, 5); //timeout in seconds
$result1 = curl_exec($curl1);
if ($result1 !== false)
{
$statusCode1 = curl_getinfo($curl1, CURLINFO_HTTP_CODE);
if ($statusCode1 == 404)
{
echo "URL Not Exists";
}
else
{
echo "URL Exists";
}
}
else
{
echo "URL not Exists";
}
解决方案
首先,您发布的代码是有效的。你不需要改变它。
如果你只是用前任试试。https://www.google.com
有用。
问题是您的 PHP 版本使用LibreSSL进行 php-curl HTTPS 连接。
我在我的 PHP 版本使用OpenTransport的 macOS 上遇到了同样的问题。
您要连接的网站需要以LibreSSL无法处理的方式建立 SSL 连接。
您需要编译/安装OpenSSL并在已编译为将其用于 php-curl 的 PHP 解释器上运行您的代码。
更新:
当你在 macOS 上时,你可以从源代码编译 PHP。谷歌搜索macos compile php from source
将返回一个“食谱”列表来做到这一点。
如果您使用brew编译 PHP(以及所有“Web 应用程序堆栈”),您可以看看这里:
osx 10.10 Curl POST 到 HTTPS url 给出 SSLRead() 错误
问题(和答案)还解决了与您的问题类似的问题。
推荐阅读
- javascript - 正则表达式如何找到 /,-,/s,,,! 在一个例子中?
- mysql - 可以在内部联接或左联接中更新 MySQL 查询
- laravel - TypeError:从 Laravel 验证接收错误时无法读取未定义的属性“状态”
- javascript - React Native 广告 (Adcolony) - 世博会
- python - Matplotlibcpp - 导入 Python 模块的问题
- python - Python:在图像上绘制两个区域
- android - 当应用程序不在后台时没有得到大图标
- java - 将 POST 从 api 转发到另一个时出现错误代码 415
- windows - 如何使用 launch.json 定位平台
- node.js - 从一个容器 NodeJs 调用 nmap