在 Codeigniter 中如何通过 ngrok 执行 POST 请求?

Posted

技术标签:

【中文标题】在 Codeigniter 中如何通过 ngrok 执行 POST 请求?【英文标题】:In Codeigniter how to perform POST request through ngrok? 【发布时间】:2019-10-18 09:40:13 【问题描述】:

我有一个网站(使用 Codeigniter 3.1.10)在通过 localhost 访问时工作正常。我正在尝试通过 ngrok 访问它来测试它,即通过互联网从另一个远程系统访问它。通过 ngrok 我可以访问登录页面:

 http://f94181a4.ngrok.io/mysite/logincontroller/login

这将显示登录视图。但是,当我单击登录视图/页面中的提交按钮时,它会从远程系统浏览器发送如下 POST 请求:

http://localhost/mysite/logincontroller/loginaction

由于远程系统以http://localhost 请求它,它无法连接到我的本地服务器。那么当从远程系统浏览器请求时,我将如何使用http://f94181a4.ngrok.io 发送 POST 请求。

http://f94181a4.ngrok.io/mysite/logincontroller/loginaction

【问题讨论】:

我不熟悉 ngrok,但我想这是一个 base_url 问题。在 ngrok 中,如果你 <?php echo "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; ?> 它会给你 http://f94181a4.ngrok.io 吗?如果是这样,您可能会切换出该 php 行的静态基本 url 您可能忘记将“base_url”配置设置为新配置。 @Alex 我不确定我需要在哪里添加那段代码。但是我尝试在 loginView 上添加。它给了f94181a4.ngrok.io。以及如何修改静态基本网址。截至目前,我没有设置任何 base_url 即 $config['base_url'] = ''; 【参考方案1】:

您可能忘记设置“base_url”配置。

试着改成这个

$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https" : "http";
$config['base_url'] = "$protocol://$_SERVER['HTTP_HOST']/mysite/";

【讨论】:

其实我现在还没有设置任何base_url,即$config['base_url'] = '';。当我按照您提供的方式设置它时,它会重定向到 XAMPP 仪表板。我还需要修改什么? @Angom 您必须在base_url 配置的末尾添加“mysite/”。

以上是关于在 Codeigniter 中如何通过 ngrok 执行 POST 请求?的主要内容,如果未能解决你的问题,请参考以下文章

当 webhook 调用通过 MacOS 上的 ngrok 到达时如何让 Xdebug 连接

Ruby on Rails:如何通过 ngrok 访问 Action Cable?

如何通过 ssh 连接到 ngrok 自托管服务器

ngrok 如何在防火墙后面工作?

如何调试 Ngrok 不通过节点模块启动?

Ngrok 隧道 https 通过配置