Heroku静态IP无法访问

时间:2020-11-11 13:11:56

标签: php node.js heroku

我正在尝试将数据从PHP脚本发送到Heroku上托管的Node.js应用程序。 Node.js应用程序将传入请求的主体保存到MongoDB。我正在使用Heroku的QuotaGuard Static插件来生成静态IP。

这是我的PHP脚本代码:

<?php
$url = 'https://appname.herokuapp.com/'; //dummy app url
$url = 'https://21.215.10.77'; //dummy IP address

$data = array('username' => 'John Doe', 'password' => '123456');
$payload = json_encode(array("user" => $data));

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

try{
    $result = curl_exec($ch);
    curl_close($ch);
} 
catch(Error $e) {
    $trace = $e->getTrace();
    echo $e->getMessage().' in '.$e->getFile().' on line '.$e->getLine().' called from '.$trace[0]['file'].' on line '.$trace[0]['line'];
}

if(!$result){
    echo "No response from Heroku!\n";
} else {
    echo "<pre>$result</pre>";
}

这是我的Node.js路由器代码:

const express = require("express");
const router = express.Router();

const Data = require("../models/data");

router.get("/", (req, res) => {
  Data.find()
    .then((datas) => res.json(datas))
    .catch((err) => console.log(err));
});

router.post("/", (req, res) => {
  const newData = new Data({
    incoming_data_body: req.body,
  });

  newData
    .save()
    .then(res.send("Data saved successfully"))
    .catch((err) => console.log(err));
});

module.exports = router;

当我使用应用程序的URL时,脚本可以正常工作并返回所需的结果,但是当我使用IP地址时,Heroku没有任何响应。我怀疑问题与Heroku的QuotaGuard静态IP有关,但我不能肯定地说。所需的应用程序要求我使用IP地址将数据发送到后端。谁能帮我解决这个问题?

0 个答案:

没有答案