簡體   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