Laravel 5.1 AJAX - 即使我发送 POST 请求,也不允许返回 405 GET 方法

Posted

技术标签:

【中文标题】Laravel 5.1 AJAX - 即使我发送 POST 请求,也不允许返回 405 GET 方法【英文标题】:Laravel 5.1 AJAX - Returning 405 GET Method Not Allowed even when I am sending a POST request 【发布时间】:2016-02-21 03:37:14 【问题描述】:

当我通过 AJAX 发送 POST 请求时,我的 Laravel POST 路由返回 405 GET Method not allowed 。但是问题是它在localhost 中有效,但在Heroku production server 中无效。我的 AJAX POST 请求作为 GET 请求发送到路由。下面我附上了截图和我的 AJAX 代码。

$.ajax(
            url: url,
            type: 'POST',
            data: data,
            contentType: 'application/json',
            headers: 
                'X-CSRF-TOKEN': token
            
        )

我的路由配置为:

Route::post('/adminpanel/projects/delete/', 'AdminPanelController@deleteData');

【问题讨论】:

尝试删除 /adminpanel/projects/delete <----- last slash 我不确定,但这对我有用 该死的人.. 非常感谢.. 它的工作.. 知道它为什么工作吗?请发表您的评论作为答案,我会投票赞成... 我不知道它在服务器中创建问题的原因,但仅在两天前解决了它。我为此搜索了很多,但找不到解决方案,最后自己解决了 嗯..我认为它的 Heroku 问题是因为在 localhost 中它的工作没有任何问题.. 可能是,但我无法回答背后的原因 【参考方案1】:

更新您的操作 url 来自

/adminpanel/projects/delete/

进入

/adminpanel/projects/delete
                        //^^ Removed that slash

删除那个斜线,它会为你工作。

【讨论】:

有人能解释一下吗?【参考方案2】:

如果你在 Laravel 中使用资源,那么通过命令检查路由列表:

php artisan route:list

看,如果您尝试发送的 POST 请求在路由中是否允许。 405错误一般是因为我们忘记在路由中提及请求。

【讨论】:

【参考方案3】:

对我来说,在我将路线从本地化路线组中取出后,它就起作用了。我正在使用laravel-localization。

【讨论】:

以上是关于Laravel 5.1 AJAX - 即使我发送 POST 请求,也不允许返回 405 GET 方法的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 5.1 中通过 AJAX 将用户输入数据从视图传递到控制器

如何在 Laravel 5.1 中强制 FormRequest 返回 json?

在 Ajax 调用中传递完整 URL 作为参数 - Laravel 5.1 路由

在 Laravel 5.1 中使用 VueJs 和 AJAX 提交表单

在 Laravel 5.1 中请求 ajax 文件不控制 PHP?

Laravel 5.1 Ajax 从 Blade View 获取 html