所以我正在创建一条需要发布的路线。路线如下:
my_route:
path: /myroute/login
defaults: { _controller: "MyBundle:Default:login"}
methods: [POST]
因此,我使用 postman 点击app_dev.php/myroute/login,我得到了我正在寻找的正确响应,当前页面仅返回“hello world”。现在,当我将 postman 更改为仅点击 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)"
我在 postman 中将请求作为 POST 请求发送,但不知何故 symfony 只将它们视为 GET 请求。我再次可以将 url 更改为 app_dev.php/myroute/login 并点击发送,它就可以工作了。我认为这是一个缓存问题,因此我尝试了以下方法来清除缓存:
$ php app/console cache:clear --env=prod --no-debug
这仍然不能解决我的问题,所以我什至还从 app/cache/prod 中删除了所有文件。我找不到任何人遇到与此类似的问题,所以我希望有人能给我指出正确的方向。我也觉得可能是这样
最佳答案
经过进一步挖掘,我发现了问题所在。所以我想也许是 postman 发送了错误的方法,所以我在谷歌上搜索了导致此问题的原因
这导致了有关 htaccess 文件的问题:
所以首先我设置 postman 点击app.php/myroute/login并且xdebug将请求方法显示为GET。我移动了 .htaccess 文件并点击相同的 url,请求方法显示为 POST。我没有点击该网址,而是将 .htaccess 文件移回并指向 /myroute/login,然后所有内容都亮了。这是一个非常烦人的练习,所以我希望这能帮助其他人在将来寻找同样的问题。
关于php - Symfony2 app.php 接收 POST 请求作为 GET app_dev.php 工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31280841/