【问题标题】:NodeJS REST API is not accessible from PHP CURL无法从 PHP CURL 访问 NodeJS REST API
【发布时间】:2016-06-26 09:03:06
【问题描述】:

我有一个 NodeJS API 来发送推送通知(GCM 和 APN)并且它工作顺利。

现在我有一个内置于 PHP Codeigniter 的管理面板,我想使用 cURL 调用 Push API。代码是这样的

<?php 
 $url = "http://my_ip:9100/service/api/push";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);       
    curl_setopt($ch, CURLOPT_HEADER, 0);

    if(curl_exec($ch) === false)
    {
        echo 'Curl error: ' . curl_error($ch);
    }

    curl_close($ch); 
?>

但是连接失败,输出是

无法连接到 my_ip:权限被拒绝

我已经从Postman Client Tool 测试了 Push API 并且它工作顺利。如果我在浏览器中尝试这个,至少它会进入 API 方法。

PHP 项目和 NodeJS 应用程序都在同一个服务器 (NGINX) 中,我尝试使用 'localhost' 代替 IP 地址,但它没有用。

我在这里缺少什么?

  • 在 cURL 中调用请求时需要添加的任何内容(尝试了 curl_setopt() 的多种组合)
  • 任何阻止来自 cURL 的请求的服务器设置

提前致谢。

【问题讨论】:

    标签: php node.js codeigniter curl nginx


    【解决方案1】:

    您尚未允许来自 Express 服务器的 CORS。这应该只是拒绝来自 curl 的连接的原因。请参阅此以允许来自 express 服务器的 cors。 CORS on ExpressJS

    【讨论】:

    • 我已经在所有 GET 和 POST 请求之前添加了这个,如果我从 Postman 或浏览器控制台打印但不是从 cURL app.use(function(req, res, next) { console.use(function(req, res, next) { log('Access-Control-Allow-Origin'); res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X -Requested-With, Content-Type, Accept"); next(); });
    • github中有详细说明。请阅读。 gist.github.com/iksose/9401758 您的 curl 请求可能存在问题,例如发送标头或内容类型。如果您提出任何解决方案,请分享。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2014-01-28
    • 1970-01-01
    相关资源
    最近更新 更多