Почему мой запрос PUT HTTP преобразуется в GET

Мы создали плагин на основе PHP, который предоставляет интерфейс RESTful, который используется мобильным приложением, над которым мы работаем. Плагин является самостоятельным, то есть любой, кто хочет использовать мобильное приложение, должен установить этот плагин PHP на свой сервер. Один из наших пользователей сообщает, что после установки плагина они не могут войти в систему. Используя Postman для реализации API-интерфейсов, участвующих в запросе на вход, я пришел к следующему:

ЗАПРОС

PUT http://<user's website>/index.php/wurrd/clientinterface/operator/login {"username":"apple", "password":"dove", "clientid":"AABBB-CCCCC-DEFGHIJ", "deviceuuid":"aaa-uuu-isdi"} 

ОТВЕТ

 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html> <head> <title>501 Method Not Implemented</title> </head> <body> <h1>Method Not Implemented</h1> <p>GET to /chat/index.php/wurrd/clientinterface/operator/login not supported. <br /> </p> <p>Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.</p> </body> </html> 

API не раскрывает этот маршрут для GET, поэтому сообщение об ошибке подходит, когда вы пытаетесь попасть туда через GET. Однако проблема заключается в том, что запрос был выполнен с помощью PUT.

Я не понимаю, как расследовать этот вопрос. На сервере работает Apache. Это может быть проблема с .htaccess? Я думал, что это проблема mod_rewrite, но я думаю, что это должно касаться URL-адреса, а не метода HTTP.

Кроме того, маршрутизация выполняется с использованием компонента маршрутизации Symfony2.

Любая помощь будет оценена по достоинству.

Благодарю.

Обновление 1:

Это конфигурация маршрута Symfony:

 wurrd_client_operator_login: # The login request details are passed in as a JSON payload. path: /wurrd/clientinterface/operator/login defaults: _controller: Wurrd\Mibew\Plugin\ClientInterface\Controller\OperatorController::loginAction methods: [PUT] по wurrd_client_operator_login: # The login request details are passed in as a JSON payload. path: /wurrd/clientinterface/operator/login defaults: _controller: Wurrd\Mibew\Plugin\ClientInterface\Controller\OperatorController::loginAction methods: [PUT] 

Solutions Collecting From Web of "Почему мой запрос PUT HTTP преобразуется в GET"

Попробуйте добавить параметр _method к URL-адресу, чтобы заставить метод.

Подробнее здесь: http://symfony.com/doc/current/cookbook/routing/method_parameters.html

Это также может произойти, если происходит ненаправленное перенаправление 303 (а также 301/302, если ваш клиент не реализует HTTP должным образом), или если прокси-сервер / человек-в-середине преобразует запрос, прежде чем он достигнет сервер.

Чтобы использовать _method , убедитесь, что ничто не отключает поддержку: http://symfony.com/doc/current/reference/configuration/framework.html#http-method-override