该代码在我的本地开发环境中运行良好,但在我将其上载到服务器时,给出了一个405方法notallowed
异常。这个问题和这个问题的解决方案对我不起作用。
这是控制器。
public function DeleteMultipleProjects(Request $request){
$json = $request->projectsToDelete;
$to_delete = collect([]);
$projects = json_decode($json);
foreach ($projects as $project) {
$to_delete->push($project->id);
}
Project::destroy($to_delete);
}
这是routes文件中的相应条目。
Route::post('/ajax/dashboard/delete-projects', 'ProjectController@DeleteMultipleProjects');
这里是对URL的AJAX调用。
$.ajax({
url: '/ajax/dashboard/delete-projects',
method: 'POST',
data: {
projectsToDelete: JSON.stringify(vThis.selectedProjects),
},
complete: function(){
vThis.refreshProjects();
}
});
这就是示例测试用例的数据。
[{"id":140,"name":"a","updated_at":"Sun, Oct 21, 2018 4:31 AM","selected":true,"selectHovering":false},{"id":139,"name":"New Project","updated_at":"Sun, Oct 21, 2018 4:31 AM","selected":true,"selectHovering":false}]
我如何克服这个错误,为什么这只发生在生产中?
值得注意的是,我在整个应用程序中还有其他对路由的AJAX调用,它们工作得很好。
问题在于我发送的数据。我不知道为什么,但我的服务器不喜欢整个项目数组,所以我更新了它,只发送了一个我想删除的id
s数组,并因此将控制器更新为只destroy
请求。如果有人有解释,我很好奇。
Laravel中的405错误表示您正在使用的HTTP方法的路由不存在。
如果您在生产过程中收到此错误,但不是在本地收到,则表明路由文件已过时或已缓存。
使用以下命令清除路由缓存:
php artisan route:clear
验证您的投递路线是否存在:
php artisan route:list --path=ajax/dashboard/delete-projects
如果path: list确认您的POST路由存在,但您仍然收到405,另一件可能导致缓存路由的事情是opache而不重新验证时间戳,在这种情况下,您可能需要重新启动php进程来清除。
看来你丢了csrf代币
将ajax post数据更新为:
$.ajax({
url: '/ajax/dashboard/delete-projects',
method: 'POST',
data: {
projectsToDelete: JSON.stringify(vThis.selectedProjects),
_token: '{{ csrf_token() }}',
},
complete: function(){
vThis.refreshProjects();
}
});
我正在使用ajax进行表单更新。当我在ajax中使用GET方法时,它工作得很好,但当我使用Post方法时,它抛出了错误405 method,这是不允许的。我正在本地主机上测试这个。我以前在localhost中做过,效果很好。顺便说一句,我用的是Laravel5.2。 这是我的ajax代码。 这是我在视图中使用的脚本 这是我的路线 当ajax函数和路由中的方法更改为GET时,它会打印在控制台中传递的
这是我的jQuery代码,我用它来做一个Ajax请求: 这是我写的路线代码: 每当我在这个URL上发布ajax请求时,它都会给我一个405(不允许使用方法)。 为什么会发生这种错误?
我正在尝试使用AJAX POST将我在第三方JS函数(支付网关)的回调函数中得到的响应保存到我的服务器,但我得到的状态代码为-405方法不允许。我得到的响应是-消息:请求方法'POST'不受支持,描述:所请求的资源不允许指定的HTTP方法。 我有以下Javascript客户端代码- 相应的服务器端Spring MVC处理程序- 关于“405方法不允许”的StackOverflow的大多数答案都导致
问题内容: 在我的项目中,我需要允许其他人向我的脚本发送ajax请求。因此,外部请求可能来自其他网站和域,也可能来自浏览器扩展。 我在脚本顶部仅添加了以下两行,以使它们能够做到: 现在我的问题是:这里是否遗漏了任何安全方面的考虑?这个简单的解决方案会带来严重的问题吗? 如果是这样,什么是更好的解决方案? 感谢您的回复。 问题答案: 如上所述,任何人都可以随时向您的页面发送请求:因此,您需要考虑的主
在我的项目中,我需要允许其他人向我的脚本发送ajax请求。因此,外部请求可能来自其他网站和域,也可能来自浏览器扩展<我只是在我的脚本顶部添加了这两行,让他们完成这项任务: 现在我的问题是:这里有我错过的任何安全考虑吗?这个简单的解决方案会产生严重的问题吗? 如果是,更好的解决方案是什么? 感谢您的回复。
我试图从我的新Angular应用程序中调用REST web服务。当发出请求时,我会得到以下错误: XMLHttpRequest无法加载http://localhost:8080/WebService。请求的资源上没有“访问-控制-允许-来源”标头。因此,不允许访问源“http://localhost”。 我发现这是因为浏览器不允许这样的操作。 编辑我也试着把它添加到我的angular应用程序中: