Php 方法不允许HttpException-CSRF-laravel 5.2

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

我使用ajax发布一个请求,然后用jquery函数“load”刷新站点的一部分,效果很好,但当我尝试重做此帖子时,它说MethodNotAllowedHttpException,我认为laravel csrf保护存在问题,因为在我刷新整个页面后,它工作正常 我的问题是,即使我刷新了站点的一部分,如何保存csrf令牌? **提前感谢**(ᵔᴥᵔ)

这些是路线

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您还可以包含视图和控制器方法吗?这样会更容易理解您的应用程序您还可以包含视图和控制器方法吗?这样会更容易理解你的应用程序