gpt4 book ai didi

php - Symfony 路由 : Why does Symfony redirects my POST request?

转载 作者:可可西里 更新时间:2023-11-01 17:28:06 25 4
gpt4 key购买 nike

我的 Symfony 应用程序出现奇怪的行为。我使用 Controller 作为 facebook 的 webhook,我希望在其中收到发布请求。

我的网络服务器的 access.log 显示以下内容:

[/Mar/2017:11:48:50 +0100] "POST /app_dev.php/bot HTTP/1.1" 301 3810 "-" "-"
[/Mar/2017:11:48:50 +0100] "GET /app_dev.php/bot/ HTTP/1.1" 200 476 "-" "-"

所以我假设我的应用确实以某种方式将 POST 请求重定向到 GET 请求。我不知道应该从哪里开始寻找它?

我的路线是这样的:

backend:
resource: "@BackendBundle/Controller/"
type: annotation
prefix: /backend

bot:
resource: "@BotBundle/Controller/"
type: annotation
prefix: /bot

# redirecting the root
root:
path: /
defaults:
_controller: FrameworkBundle:Redirect:urlRedirect
path: /backend
permanent: true

还有我在 BotBundle 中的 Controller :

/**
* @Route("/")
* @param Request $request
* @return Response
*/
public function indexAction(Request $request)
{
$logger = $this->get('logger');
$logger->info('REQUEST METHOD: '.$request->getMethod());

只记录 GET 请求,POST 请求从不显示,我只在 access.log 中看到 301。

也许它必须对 apache 做些什么?

有没有人告诉我如何调试它?

提前致谢!

最佳答案

在 Symfony 中,带或不带尾部斜杠的路由都是相同的路由。但是,为了获得正确的路线,您将获得带有尾部斜杠的路线。

由于您要发布到 /app_dev.php/bot,您将被重定向到 /app_dev.php/bot/,并带有尾部斜线。这里的问题是 HTTP 规范规定,当 POST 获得重定向时,浏览器应遵循重定向,将动词更改为 GET,以避免幂等性问题。

关于php - Symfony 路由 : Why does Symfony redirects my POST request?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42832311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com