get_headers()请求https报错解决思路
admin
2023-01-28 04:09:09
0

场景:项目中客户端上传文件到OSS后,返回给服务端一个OSS的文件对象名称。
服务端拿到文件对象名称后,需要通过OSSClient生成一个签名url,然后提供下载服务。

下载服务中,拿到URL后要去校验该url是否有效,于是使用get_headers()去校验该文件url是否能正确响应。如下:

$fileUrl='https://cdn.segmentfault.com/v-5c8b4d77/global/img/touch-icon.png';
get_headers($fileUrl, 1);

结果报错:

get_headers(): SSL operation failed with code 1. 
OpenSSL Error messages:
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed

原因:
get_headers()会对url发出请求HTTP请求,获取服务器响应头信息。
遇到url为https时,会去校验签名证书。

解决思路:
关闭证书校验。

最终实现:

//生成文件URL
        $fileUrl = ServiceInputVADataService::generateOssSignUrl($objectName);
        if (empty($fileUrl)) return $this->Error('无法生成文件URL,请联系技术.');

        //校验能否获取响应状态
        stream_context_set_default( [
            'ssl' => [
                'verify_host' => false,
                'verify_peer' => false,
                'verify_peer_name' => false,
            ],
        ]);
        if (get_headers($fileUrl, 1) === false) return $this->Error('生成文件URL无法访问,请联系技术.');

相关内容

热门资讯

美军被疑隐瞒对伊作战伤亡 【环球时报综合报道】美国国防部21日发表声明说,一名美军士兵17日在伊朗针对位于约旦的穆沃费格萨勒提...
OpenAI模型“越狱”攻击,... 一家美国公司遭到美国AI攻击,而提供保护的竟是一款中国人工智能工具。AI工具平台Hugging Fa...
南航第十二架C919国产大飞机... 广州7月21日电 (记者 郭军)7月21日,一架尾号为B-659G的国产大飞机飞抵广州白云国际机场,...
无人艇第一股,要来了 那个被资本追捧的“无人艇第一股”,要来了。 2017年冬天的一个夜晚,港珠澳大桥附近的海面上,81条...
三一锂能取得电池包专利提升电芯... 国家知识产权局信息显示,三一锂能有限公司取得一项名为“电池包”的专利,授权公告号CN22453717...
价格为何下滑?市场竞争力为何不... 记者采访西瓜种植主产区河南开封等地如何种得好,又能卖得好(经济聚焦)本报记者 常 钦 《人民日报》(...
“镐山”之后美再威胁袭伊基础设... 截至7月22日,美军已连续11晚对伊朗发动袭击,伊方对美中东地区军事基地的反击也未停止。与此同时,美...
美国“痛失”杨植麟,这是历史性... 杨植麟的月之暗面创造了Kimi K3,轰动整个世界。他是近年来第一个放弃了美国机会、回中国创业,并且...
铭显光电取得LED显示屏加工夹... 国家知识产权局信息显示,上海铭显光电科技有限公司取得一项名为“一种LED显示屏加工夹具”的专利,授权...
大盘承压依旧登顶,vivo拿下... 7月22日消息,市场调研机构Omdia发布2026年第二季度印度智能市场报告,数据显示本季度印度手机...