【问题标题】:TokenMismatchException in VerifyCsrfToken.php while JQuery Ajax [duplicate]JQuery Ajax时VerifyCsrfToken.php中的TokenMismatchException [重复]
【发布时间】: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:

我错过了什么吗?

【问题讨论】:

标签: php laravel-5 laravel-5.1


【解决方案1】:

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

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

然后这样做:

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

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

希望对你有帮助。

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

【讨论】:

    猜你喜欢
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 2015-06-22
    • 2017-07-20
    相关资源
    最近更新 更多