为了账号安全,请及时绑定邮箱和手机立即绑定

php-curl 请求返回被拒绝

php-curl 请求返回被拒绝

PHP
呼啦一阵风 2021-11-19 16:14:30
我目前正在尝试通过此链接的 curl 请求获取一些数据。这样做会返回以下内容:“HTTP/2 403 服务器:AkamaiGHost mime-version:1.0 content-type:text/html content-length:293 expires:Sun,2019 年 8 月 11 日 08:34:24 GMT 日期:Sun,2019 年 8 月 11 日 08:34:24格林威治标准时间拒绝访问您无权访问“ http://www.g2a.com/lucene/search/filter?” 在这台服务器上。参考 #18.9d0c1502.1565512464.22e1446"我知道 curl 工作正常,因为它适用于其他请求,只是这个请求被拒绝。此外,使用浏览器打开链接不会显示“拒绝访问”错误,但实际上会返回我需要的数据。这是从代码复制粘贴的 curl 请求:try{    //  initiate curl (used to request data from other webpages)    $ch = curl_init();    // will return the response, if false it prints the response    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    // set the url, eliminates headers from response    curl_setopt($ch, CURLOPT_URL, $g2a);    curl_setopt($ch, CURLOPT_HEADER, true);     // execute    $result=curl_exec($ch);    //if some error occurs    if (!$result)        throw new Exception(curl_error($ch), curl_errno($ch));    // Closing    curl_close($ch);} catch(Exception $e) {    trigger_error(sprintf('Curl failed with error #%d: %s', $e->getCode(), $e->getMessage()), E_USER_ERROR);}var_dump($result);//converts json to associative array$result=json_decode($result, true);关于可能是什么问题的任何想法?
查看完整描述

2 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

如果您想在 CURL 中使用 SSL,您应该从以下位置获取根证书:https : //curl.haxx.se/docs/caextract.html


只需使用内容顶部的链接下载 cacert.pm.. 并告诉在连接到 SSL 时使用哪个证书。这设置了一个适当的连接(一个实际安全的连接,反对使用 ssl_verifyer 为 false...)


我有资格的猜测是,您要连接的服务器可能没有将任何传入请求设置为有效(通过称为 CORS(访问控制允许源)的东西)。如果您想从中www.yourdomain.com进行连接,则他们必须设置www.yourdomain.com对传入请求有效的设置。


我已经测试了以下代码适用的其他域,因此您必须与 g2a.com 的所有者交谈才能处理此问题(这是服务器问题,而不仅仅是代码问题)


<?php

$g2a = 'https://www.g2a.com';


//Tell cURL where our certificate bundle is located.


//an absolute path to your downloaded pem-file:

$certificate = "C:\wamp\www\stackoverflow\cacert.pem"; 


try{

    //  initiate curl (used to request data from other webpages)

    $ch = curl_init();

    // will return the response, if false it prints the response

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($ch, CURLOPT_CAINFO, $certificate);

    curl_setopt($ch, CURLOPT_CAPATH, $certificate);


    // set the url, eliminates headers from response

    curl_setopt($ch, CURLOPT_URL, ($g2a) );

    curl_setopt($ch, CURLOPT_HEADER, true); 

    // execute

    $result=curl_exec($ch);


    //if some error occurs

    if (!$result)

        throw new Exception(curl_error($ch), curl_errno($ch));


    // Closing

    curl_close($ch);

    } catch(Exception $e) {

        trigger_error(sprintf('Curl failed with error #%d: %s', $e->getCode(), $e- 

        >getMessage()), E_USER_ERROR);

}

var_dump($result);


//converts json to associative array

$result=json_decode($result, true);


查看完整回答
反对 回复 2021-11-19
?
Helenr

TA贡献1780条经验 获得超4个赞

直接访问HTTPS URL:

$g2a = "https://www.g2a.com/lucene/search/filter";

没有授权。


查看完整回答
反对 回复 2021-11-19
  • 2 回答
  • 0 关注
  • 251 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信