【问题标题】:MethodNotAllowedHttpException Laravel 5MethodNotAllowedHttpException Laravel 5
【发布时间】:2015-09-11 03:01:05
【问题描述】:

我正在尝试使用 div 提交 POST 表单,但我收到了这个 MethodNotAllowedHttpException 消息。

HTML

 <form action="{{ url('upload') }}" method="POST" name="form" >
   ...
   <div onClick="document.forms.form.submit();">
     <i class="icon upload"></i>
     {{trans('gui.upload')}}
   </div>
 </form>

routes.php

Route::group(
[
  'prefix' => LaravelLocalization::setLocale(),
  'middleware' => [ 'localeSessionRedirect', 'localizationRedirect' ]
],
function()
{
  Route::post('upload', ['middleware' => 'admin', 'uses'=>'DatabaseController@upload']);
});

错误信息

MethodNotAllowedHttpException in compiled.php line 7717:

in compiled.php line 7717
at RouteCollection->methodNotAllowed(array('GET', 'HEAD')) in compiled.php line 7713
at RouteCollection->getRouteForMethods(object(Request), array('GET', 'HEAD')) in compiled.php line 7691
at RouteCollection->match(object(Request)) in compiled.php line 6965
...

如果我尝试使用 Route::any,它会起作用

【问题讨论】:

  • 你到底遇到了什么错误?
  • compiled.php 第 7717 行中的 MethodNotAllowedHttpException
  • 检查客户端(在网络中)发送的请求,可能是错误的,也可能是中间件将其转换为GET
  • 我刚查了一下,上面写着方法 POST :/
  • 如果我尝试使用 Route::any 就可以了

标签: php laravel


【解决方案1】:

这可能发生的三个可能原因

  1. 您在routes.php 中有一条不同的路由,它也恰好与/upload URL 匹配。考虑使用命名路由和routes(...) 而不是url(...) 来帮助缓解此类问题

  2. 您有一个中间件正在更改请求的 HTTP 动词

  3. 您的请求已成功发布,但会自动重定向到另一个 URL,而 routes.php 中没有匹配的 HTTP 动词

【讨论】:

    猜你喜欢
    • 2015-08-30
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 2015-09-22
    • 2016-05-23
    • 2016-08-30
    相关资源
    最近更新 更多