当前位置: 首页 > 知识库问答 >
问题:

错误405(方法不允许)Laravel 5

水麒
2023-03-14

我试图用jQuery做一个POST请求,但是我得到了一个错误405(不允许使用方法),我正在使用Laravel 5

这是我的代码:

jQuery

<script type="text/javascript">
    $(document).ready(function () {
        $('.delete').click(function (e){
            e.preventDefault();
            var row = $(this).parents('tr');
            var id = row.data('id');
            var form = $('#formDelete');
            var url = form.attr('action').replace(':USER_ID', id);
            var data = form.serialize();
            $.post(url, data, function (result){
                alert(result);
            });
        });
    });
    </script>

超文本标记语言

{!! Form::open(['route' => ['companiesDelete', ':USER_ID'], 'method' =>'DELETE', 'id' => 'formDelete']) !!}

    {!!Form::close() !!}

控制器

public function delete($id, \Request $request){
        return $id;
    }

JQuery错误http://localhost/laravel5.1/public/empresas/eliminar/5405(不允许方法)。

url值为

http://localhost/laravel5.1/public/empresas/eliminar/5

数据值是

_method=DELETE&_token=pCETpf1jDT1rY615o62W0UK7hs3UnTNm1t0vmIRZ.

如果我更改为$。getrequest它工作正常,但我想做一个post请求。

有人能帮我吗?

谢谢

编辑

路线

Route::post('empresas/eliminar/{id}', ['as' => 'companiesDelete', 'uses' => 'CompaniesController@delete']);

共有3个答案

潘璞瑜
2023-03-14

这可能会对某人有所帮助,所以我也会把我的输入放在这里。

我遇到过同样(或类似)的问题。显然,问题是Modsec通过以下规则阻止了POST请求:350147, 340147, 340148, 350148

阻止请求后,我被重定向到相同的endpoint,但当然是作为GET请求,因此是405。

我把那些规则列入了白名单,瞧,405错误消失了。

希望这能帮助到某人。

孔厉刚
2023-03-14

你的路线。php文件需要正确设置。

我假设你当前的设置是这样的:

Route::post('/empresas/eliminar/{id}','CompanyController@companiesDelete');

或者别的什么。而是为delete方法定义一个路由。

Route::delete('/empresas/eliminar/{id}','CompanyController@companiesDelete');

现在,如果您使用的是路由资源,则要用于'DELETE'方法的默认路由名称是。在该函数中定义删除逻辑。

燕扬
2023-03-14

methodNotAllowed异常表示您请求的HTTP方法不存在路由。

您的表单设置为发出DELETE请求,因此您的路由需要使用route::DELETE()来接收此请求。

Route::delete('empresas/eliminar/{id}', [
        'as' => 'companiesDelete',
        'uses' => 'CompaniesController@delete'
]);
 类似资料:
  • 问题内容: 我正在开发flask注册表格,但收到错误消息: 码: registration.html: 当我访问时,我收到错误消息。我究竟做错了什么? 问题答案: 这是因为在定义路由时仅允许POST请求。 当你在浏览器中访问时,它将首先执行GET请求。只有提交表单后,浏览器才会执行POST。因此,对于像你这样的自我提交表单,你需要同时处理两者。 使用 应该管用。

  • 我正在尝试使用angularJs和$http发布一个表单。post方法。但每当我执行此函数时,它都会给我以下错误:加载资源失败:服务器响应状态为405(不允许使用方法),我不知道该怎么办。(Im使用visual studio 2015)

  • 我有Laravel 5.4和VueJs应用程序。当我在Localhost中运行它时,它已经工作了,但是现在。我把主机放在一台服务器上,它会给出错误信息 这是我在VueJS的POST请求 这是api.php

  • 问题内容: 我刚刚开始学习Flask,并且我正在尝试创建一种允许POST方法的表单。 这是我的方法: 而我的: 加载表单(在收到GET时将其呈现)可以正常工作。但是,当我单击“ 提交”按钮时,出现一个。 为什么不显示“ Hello”? 问题答案: 除非存在输入错误,否则你的表单将提交给路由方法,除非你输入错误,否则应调整表单的属性以指向视图

  • 我有一个非常简单的Spring引导应用程序,它由以下代码保护: 这个想法是为了保护“admin”部分。它公开了一个RESTAPI。问题是所有的帖子都被退回了 405方法不允许 如果我从应用程序中删除安全启动器,它就会工作。这让我相信安全配置是问题所在。但我不知道怎么做。

  • 问题内容: 经过研究后,我在问这个问题。我确实遵循了针对此类错误的解决方案,但对我不起作用。在下面的代码中出现错误的任何建议。我正在创建一个REST API,但是当我请求url时却出现405错误。下面是URI正在请求。 下面是代码片段。 web.xml: 问题答案: 将此更改为并尝试,