繁体   English   中英

Symfony2 app.php 接收 POST 请求作为 GET app_dev.php 工作正常

[英]Symfony2 app.php receiving POST request as GET app_dev.php works fine

所以我正在创建一个需要发布的路线。 路线如下:

my_route:
  path:     /myroute/login
  defaults: { _controller: "MyBundle:Default:login"}
  methods:  [POST]

所以我使用邮递员点击app_dev.php/myroute/login并得到我正在寻找的正确响应,目前页面只返回“hello world”。 现在,当我将邮递员更改为仅点击app.php/myroute/login 时,我收到一条错误消息:

The server returned a "405 Method Not Allowed".

我真的很困惑为什么它说不允许使用方法,所以我跟踪了 prod.log 文件并得到以下内容:

Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException: "No route found for "GET /myroute/login": Method Not Allowed (Allow: POST)"

我将邮递员中的请求作为 POST 请求发送,但不知何故 symfony 只将它们视为 GET 请求。 我再次可以将 url 更改为app_dev.php/myroute/login并点击发送,它就可以工作了。 我认为这是一个缓存问题,所以我尝试了以下方法来清除缓存:

$ php app/console cache:clear --env=prod --no-debug

这仍然不能解决我的问题,所以我什至还从app/cache/prod 中删除了所有文件。 我找不到任何有类似问题的人,所以我希望有人能指出我正确的方向。 我还以为可能是

经过更多的挖掘,我发现了问题所在。 所以我想也许是邮递员发送了不正确的方法,所以我在谷歌上搜索导致这种情况的方法

邮递员将 POST 作为 GET 发送

这导致了一个关于 htaccess 文件的问题:

重定向 POST htaccess

所以首先我设置邮递员点击app.php/myroute/login并且 xdebug 将请求方法显示为 GET。 我移动了 .htaccess 文件并点击了相同的 url,请求方法显示为 POST。 我没有点击那个 url,而是将我的 .htaccess 文件移回并指向/myroute/login ,一切都亮了起来。 这是一个非常烦人的练习,所以我希望这会在将来拯救其他人寻找同样的问题。

对我来说,情况是我的错误,即我发送到 http 而不是 https

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM