当前位置: 首页 > 面试题库 >

PHP CURL和HTTPS

齐英朗
2023-03-14
问题内容

我发现此功能确实出色(IMHO)

/**
 * Get a web file (HTML, XHTML, XML, image, etc.) from a URL.  Return an
 * array containing the HTTP server response header fields and content.
 */
function get_web_page( $url )
{
    $options = array(
        CURLOPT_RETURNTRANSFER => true,     // return web page
        CURLOPT_HEADER         => false,    // don't return headers
        CURLOPT_FOLLOWLOCATION => true,     // follow redirects
        CURLOPT_ENCODING       => "",       // handle all encodings
        CURLOPT_USERAGENT      => "spider", // who am i
        CURLOPT_AUTOREFERER    => true,     // set referer on redirect
        CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
        CURLOPT_TIMEOUT        => 120,      // timeout on response
        CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
    );

    $ch      = curl_init( $url );
    curl_setopt_array( $ch, $options );
    $content = curl_exec( $ch );
    $err     = curl_errno( $ch );
    $errmsg  = curl_error( $ch );
    $header  = curl_getinfo( $ch );
    curl_close( $ch );

    $header['errno']   = $err;
    $header['errmsg']  = $errmsg;
    $header['content'] = $content;
    return $header;
}

我唯一的问题是它不适用于https://。Anny的想法,我需要做些什么才能使https工作?谢谢!


问题答案:

快速修复,在您的选项中添加:

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false)

现在,您不知道您实际上要连接到哪个主机,因为cURL不会以任何方式验证证书。

或只是将其添加到当前函数中:

/**
 * Get a web file (HTML, XHTML, XML, image, etc.) from a URL.  Return an
 * array containing the HTTP server response header fields and content.
 */
function get_web_page( $url )
{
    $options = array(
        CURLOPT_RETURNTRANSFER => true,     // return web page
        CURLOPT_HEADER         => false,    // don't return headers
        CURLOPT_FOLLOWLOCATION => true,     // follow redirects
        CURLOPT_ENCODING       => "",       // handle all encodings
        CURLOPT_USERAGENT      => "spider", // who am i
        CURLOPT_AUTOREFERER    => true,     // set referer on redirect
        CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
        CURLOPT_TIMEOUT        => 120,      // timeout on response
        CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
        CURLOPT_SSL_VERIFYPEER => false     // Disabled SSL Cert checks
    );

    $ch      = curl_init( $url );
    curl_setopt_array( $ch, $options );
    $content = curl_exec( $ch );
    $err     = curl_errno( $ch );
    $errmsg  = curl_error( $ch );
    $header  = curl_getinfo( $ch );
    curl_close( $ch );

    $header['errno']   = $err;
    $header['errmsg']  = $errmsg;
    $header['content'] = $content;
    return $header;
}


 类似资料:
  • 问题内容: 尝试按以下说明设置https:https://github.com/astaxie/beego/issues/401并将其保存在日志中: 我正在Windows 10上运行它。有人让Beego使用https吗?我使用了自签名证书,该证书对于通用golang https简单程序很好用。 问题答案: 在Chrome和名为Postman的Chrome扩展程序中进行了测试。通过设置chrome:

  • 问题内容: 我有一个非常普通的Express应用程序- 简单的服务器逻辑,视图,许多客户端JS。我必须执行许多AJAX请求。其中一些需要通过HTTPS协议保护(某些不需要)。 因此,我的服务器应同时使用HTTP和HTTPS。它也应该在本地计算机(正常运行nodemon)和Heroku上都可以工作。 据我了解,Heroku为您提供了一个您可以监听的端口(process.env.PORT),并通过代理

  • 问题内容: 我正在尝试获取用户输入的网址的图标,例如 我使用HttpUrlConnection 从主机URL 的扩展名中获取网站图标的位图。 但是,由于用户可能不会指定或,所以我必须自己添加它。我遇到的问题是,如果我在url前面添加,一切都会正常运行,但是对于,某些网站会返回该网站图标,而其他网站只会给我null。我如何找出使用哪个页面?我应该为每种情况添加吗?是否有任何网站严格限制并会返回nul

  • 问题内容: 谁能解释何时覆盖以及? 问题答案: configure(AuthenticationManagerBuilder)用于通过允许轻松添加AuthenticationProviders来建立身份验证机制:例如,以下内容定义了具有内置“用户”和“管理员”登录名的内存中身份验证。 configure(HttpSecurity)允许基于选择匹配在资源级别配置基于Web的安全性-例如,以下示例将以

  • 问题内容: 我的问题很简单,但我找不到答案,也没有自己进行测试的资源。我可以从一个域向另一个HTTPS域发出HTTPS CORS请求吗?我可以从一个域向另一个HTTPS域发出HTTP CORS请求吗?我知道,我可以执行从一个域到另一个HTTP域的HTTP CORS请求,但是当使用HTTPS时,我不知道是否存在任何区别。 谢谢, 菲利普 问题答案: 是的,您可以从一个HTTPS域向另一个HTTPS域

  • 状态码 定义 1xx 报告 接收到请求,继续进程 2xx 成功 步骤成功接收,被理解,并被接受 3xx 重定向 为了完成请求,必须采取进一步措施 4xx 客户端出错 请求包括错的顺序或不能完成 5xx 服务器出错 服务器无法完成显然有效的请求 403: Forbidden 404: Not Found HTTPS握手,对称加密,非对称加密,TLS/SSL,RSA