JQuery Ajax时VerifyCsrfToken.php中的TokenMismatchException [重复]

Posted

技术标签:

【中文标题】JQuery Ajax时VerifyCsrfToken.php中的TokenMismatchException [重复]【英文标题】:TokenMismatchException in VerifyCsrfToken.php while JQuery Ajax [duplicate] 【发布时间】:2016-03-30 10:26:21 【问题描述】:

下面是 Blade 中的代码。

<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">

@foreach($Projects as $Project)
    <tr>
        <td>
            @if($Project->ProjectStatusID == \App\Enumeration\Project\ProjectStatus::Open)
                <a pid="!! $Project->ProjectID !!" class="Shutmedown" >Cancel</a>
            @endif
        </td>
    </tr>
@endforeach

JQuery

$('.Shutmedown').click(function() 
    $.ajax(
        url: "/CancelProject",
        type: "POST",
        data: "ProjectID" : $(this).attr('pid'),
        async: true,
        contentType: "application/json; charset=utf-8",
        success: function () 
            location.reload();
        ,
        error: function () 
            alert('hi');
        
    );
);

有什么问题?

JQuery Ajax 报错:

加载资源失败:服务器响应状态为 500 (内部服务器错误)

在检查有关请求的更多详细信息时:我收到以下错误详细信息。

VerifyCsrfToken.php 第 53 行中的 TokenMismatchException:

我错过了什么吗?

【问题讨论】:

看看***.com/questions/20444236/… 【参考方案1】:

您好,在 Laravel 文档中,必须使用标头将令牌注入到 ajax 请求的后端。所以他们建议将令牌放在元字段中,例如。

<meta name="csrf-token" content=" csrf_token() ">

然后这样做:

$.ajaxSetup(
    headers: 
        'X-CSRF-TOKEN' : $('meta[name="csrf-token"]').attr('content')
    
);

通过标头将令牌发送到后端。

希望对你有帮助。

因此,在您的情况下,在 ajax 请求中传递保存令牌的输入值。

【讨论】:

以上是关于JQuery Ajax时VerifyCsrfToken.php中的TokenMismatchException [重复]的主要内容,如果未能解决你的问题,请参考以下文章

JQuery Ajax - 如何在进行 Ajax 调用时检测网络连接错误

jQuery - 在提交时添加附加参数(不是 ajax)

尝试在页面滚动上加载帖子时出现 Ajax/Jquery/PHP 问题

jQuery Ajax

jQuery Ajax 操作函数

jQuery Ajax 操作函数