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

标签 php apache symfony http

我的 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/

相关文章:

javascript - 网络套接字 : onmessage is not firing. !

php - 如何在同一个表中插入不同的值和新行?

apache - 如何在 ubuntu 上跟踪 php5-fpm umask 设置的来源

apache - 更新 SSL 证书后出现错误。 Apache 网络服务器

php - 在表单中使用 DateIntervalType 类

php - 使用 Laravel 在 Azure 中来自单个请求的多个重复 HTTP 请求/查询

php - PDO 无法连接到数据库

apache - 升级到 Apache 2.4.27 后无法加载 mod_ssl.so - undefined symbol : SSL_get_srp_userinfo

symfony - Twig 模板中的间隔

php - 使用 API 平台允许 json 中的 NULL 值