Php 方法不允许HttpException-CSRF-laravel 5.2
我使用ajax发布一个请求,然后用jquery函数“load”刷新站点的一部分,效果很好,但当我尝试重做此帖子时,它说MethodNotAllowedHttpException,我认为laravel csrf保护存在问题,因为在我刷新整个页面后,它工作正常 我的问题是,即使我刷新了站点的一部分,如何保存csrf令牌? **提前感谢**(ᵔᴥᵔ) 这些是路线Php 方法不允许HttpException-CSRF-laravel 5.2,php,jquery,html,ajax,laravel,Php,Jquery,Html,Ajax,Laravel,我使用ajax发布一个请求,然后用jquery函数“load”刷新站点的一部分,效果很好,但当我尝试重做此帖子时,它说MethodNotAllowedHttpException,我认为laravel csrf保护存在问题,因为在我刷新整个页面后,它工作正常 我的问题是,即使我刷新了站点的一部分,如何保存csrf令牌? **提前感谢**(ᵔᴥᵔ) 这些是路线 Route::post('/upvote', array( 'uses'=> 'AffichageController@upvo
Route::post('/upvote', array(
'uses'=> 'AffichageController@upvote',
'as'=> 'upvote' ));
Route::post('/putcomment', array(
'uses'=> 'AffichageController@putcomment',
'as'=> 'putcomment'));
我认为问题不在于路由,因为它工作正常,但当ajax加载网站的一部分时,它就会停止工作,这就是我仅加载网站的一部分的方式
$(“#部分网站”).load('theURLofSITE#部分网站')
如果我重新加载页面,它将再次工作通常建议将csrf令牌传递到meta标记(位于
标记内)中的网页
通常建议将csrf令牌传递到meta标记(位于
标记内)中的网页
您能显示您的路由吗?缺少CSRF令牌的错误异常通常是令牌不匹配异常。MethodNotAllowedHttpException表示路由有问题 未定义路由,或者未传递正确的谓词。下面是PUT方法的示例AJAX调用:
function myAjaxCall() {
var formData = {
'_method': 'PUT'
// Some other data you want to pass to your controller
}
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf_token"]').attr('content')
}
});
$.ajax({
url: url,
type: "POST",
data: formData,
success: function (response) {
// Your login on success
},
error: function (response) {
// Handle error
}
});
}
可以显示您的路由吗?缺少CSRF令牌的错误异常通常是令牌不匹配异常。MethodNotAllowedHttpException表示路由有问题 未定义路由,或者未传递正确的谓词。下面是PUT方法的示例AJAX调用:
function myAjaxCall() {
var formData = {
'_method': 'PUT'
// Some other data you want to pass to your controller
}
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf_token"]').attr('content')
}
});
$.ajax({
url: url,
type: "POST",
data: formData,
success: function (response) {
// Your login on success
},
error: function (response) {
// Handle error
}
});
}
我解决了这个问题,正如@Gadzhev先生所说的,这不是csrf验证的问题,而是路由的问题 路由是在ajax函数中定义的,但不是在表单中定义的,因此当我使用jquery加载表单时,忘记有一个函数执行此表单并开始在没有ajax的情况下提交表单,因此它会导致此问题,这意味着路由是错误的 因此,要解决这个问题,只需使用您想要加载的div重新加载ajax函数,或者如果您使用的是类似于触发器的函数
$('.button')。在('click',function(){alert('clicked')})上
将其更改为:
$('body')。在('click','button',function(){alert('clicked')})上
以下是一些可能对您有所帮助的问题:
我解决了这个问题,正如@Gadzhev先生所说的,这不是csrf验证的问题,而是路由的问题
路由是在ajax函数中定义的,但不是在表单中定义的,因此当我使用jquery加载表单时,忘记有一个函数执行此表单并开始在没有ajax的情况下提交表单,因此它会导致此问题,这意味着路由是错误的
因此,要解决这个问题,只需使用您想要加载的div重新加载ajax函数,或者如果您使用的是类似于触发器的函数
$('.button')。在('click',function(){alert('clicked')})上
将其更改为:
$('body')。在('click','button',function(){alert('clicked')})上
以下是一些可能对您有所帮助的问题:
好了,现在我知道怎么做了,谢谢▾˘~) (~˘▾˘)~ \ (•◡•) /不,它不起作用ಠ~ಠ这将使其在页面中可用。您必须将其与每个jquery请求一起发送。是的,我知道,但它不起作用。我一直在获取方法不允许HttpException知道了,现在我知道如何做了,谢谢▾˘~) (~˘▾˘)~ \ (•◡•) /不,它不起作用ಠ~ಠ这将使其在页面中可用。您必须将其与每个jquery请求一起发送。是的,我知道,但它不起作用。我一直在获取方法不允许HttpException您还可以包含视图和控制器方法吗?这样会更容易理解您的应用程序您还可以包含视图和控制器方法吗?这样会更容易理解你的应用程序