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

标签 php symfony post get postman

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

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 发送了错误的方法,所以我在谷歌上搜索了导致此问题的原因

Postman sending POST as GET

这导致了有关 htaccess 文件的问题:

Redirect POST 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/

相关文章:

php - 如何为 2 个用户代理加载自定义样式表?

.htaccess - 使 SSL/HTTPS 与 Symfony2 一起工作时遇到问题

jquery - Rails 无法正确解码来自 jQuery 的 JSON(数组变成带有整数键的散列)

post - 使用 Curl 和 Postman 构建 HTTP POST 请求

php - 如何设置模态显示基于按钮点击的内容?

php - 将 PHP 置于 Javascript 中

php - Symfony2 配置 : omit arrayNode instead of providing empty array

android - 使用 Android volley 发送 ByteArray

php - 在 PHP 中查找远程/外部文件 mimetypes

Symfony 2 : Injecting logger for specific channel/handler to services