POST 可以使用 file_get_contents('php://input'); 进行重定向吗?

Can a POST follow a redirect using file_get_contents('php://input');?

我正在为 Exact Online 构建一个 webhook。我将我的 webhook 订阅 url 注册为:https://www.example.com/webhooks/exact/orders/

在 .htaccess 中我重写了这个 url:

Options +FollowSymlinks
Options -MultiViews

RewriteEngine on

RewriteRule ^webhooks/exact/orders/$                /webhooks/exact-orders.php [NC,QSA,L]

在 php 文件中,我回显了 post 输入:

echo file_get_contents('php://input');

当我用 postman 测试它时它没有输出任何东西,但是当我在 postman 中将 url 更改为 https://example.com/webhooks/exact-orders.php 时它起作用了。

所以当 url 被重写时 post 丢失了。有什么方法可以防止这种情况发生,还是我必须更改我的 webhook 订阅 url?

我对其他公司的 webhook 使用相同的重写规则,它们工作正常。

经过一些测试,我发现问题与从 /webhooks/exact/orders/webhooks/exact-orders.php

的重定向无关

由于从 https://www. 重定向到 https://

,POST 丢失了

在服务器设置中我找到了一个名为 'Prefered domain' 的设置。它解释说:

Select the URL (either with or without the www. prefix) to which site visitors will be redirected via a SEO-safe HTTP 301 redirect.

当我将首选域切换到 'None' 时,问题就解决了。

作为替代解决方案,我可以将我的 webhook 订阅更改为 url 而无需 www.前缀

我希望这对以后的人有所帮助。