我正在尝试将数据从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地址将数据发送到后端。谁能帮我解决这个问题?