PHP cURL-将数据从www发送到本地IP
我一直在尝试使用cURL将数据发送到本地IP。此IP正在等待接收传入数据 为此,我使用了以下代码:PHP cURL-将数据从www发送到本地IP,php,curl,localhost,local,Php,Curl,Localhost,Local,我一直在尝试使用cURL将数据发送到本地IP。此IP正在等待接收传入数据 为此,我使用了以下代码: if(isset($_GET['post'])) { $data = array( 'type' => 'direct', 'packages' => [] ); $curl = curl_init('http://192.168.2.10:12800/api/install'); curl_setopt($curl,
if(isset($_GET['post'])) {
$data = array(
'type' => 'direct',
'packages' => []
);
$curl = curl_init('http://192.168.2.10:12800/api/install');
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl, CURLOPT_FAILONERROR, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
if (curl_errno($curl)) {
$error_msg = curl_error($curl);
}
echo curl_exec($curl);
if (isset($error_msg)) {
echo $error_msg;
} else {
echo 'OK!';
}
}
在本地主机上它可以工作,但在实时网站上却不行
我在想,非本地主机可能无法与本地主机环境通信,但我不确定
可以让我的脚本将数据发送到本地IP吗
编辑:事后想想,我是否必须切换到JavaScript才能工作?为了让远程服务器与本地基础设施通信,您需要通过外部IP公开它。因此,您需要: 1) 在路由器上设置一个端口的路由(到passthru,例如端口12800到本地网络中的一个特定IP,例如,如果您的外部IP是83.123.123.123,那么路由器将通过发送到83.123.123:12800到192.168.2.10:12800的任何通信。通常这种设置称为“路由”或“端口转发”或“虚拟服务器”在里面 路由器的设置 2) 学习你的外部ip。您可以通过以下方式进行操作,例如:
3) 如果您的IP是动态的,它可能会不时发生变化。为了避免出现问题,您可以在一个流行的提供商(例如no-ip.com)中设置动态DNS条目。192.168.2.10的代码是否也在实时服务器上运行,您是否更新了ip地址?@NigelRen 192.168.2.10:12800的应用程序确实在本地服务器上运行,正在等待发送到IP地址的传入数据。您不太可能从远程服务器访问此IP地址,您使用的范围仅在本地网络上可用。不确定是否给出了答案。谢谢你的解释。此解决方案适用于任何网站访问者,因此,如果每个访问我的网站的人都必须完成这些步骤,则可能无法解决此问题。用JavaScript处理这个问题行得通吗,因为这是客户端而不是服务器端?根据您所说的,每个客户端都需要在其机器上托管PHP文件并启用Web服务器,而这很可能不是您想要实现的。您可以尝试通过JavaScript调用本地IP,但是:您的所有客户机是否都有一个本地Web服务器来处理启用的请求?也许再描述一下您正在尝试构建的服务,这样我将告诉您更多关于您需要的基础设施的信息。是的,每个访问者都将运行一个Web服务器来接收传入的数据。此服务将用作CDN,用于将更新文件下载到访客服务器,始终在本地IP上运行。我不确定这些信息是否足够你提供建议?假设,JavaScript可以工作,但这需要我公开一个私有API,所以下一步是在我获得JavaScript方法的PoC工作后,我将研究API安全性,然后是:您可以尝试使用JSONP加载内容,或者在所有本地服务器的响应中添加
accesscontrolalloworigin
头。但是,客户端仍然需要a)打开Web服务器,而b)进入向其本地服务器调用查询的网站。这不会是一个问题,因为访问者知道该服务,并且需要运行Web服务器才能使用该服务。我将尝试使用JavaScript的方式来实现它。我认为使用PHP发送它对我来说会容易得多,因为我不必担心API的安全问题。今天学到了一些新东西。