【问题标题】:error with sending javascript parametre to action asp net boilerplate将javascript参数发送到操作asp net样板时出错
【发布时间】:2017-10-14 14:19:55
【问题描述】:

我正在做我一生中最大的项目,但我犯了很多错误, 有这样的故事: 我制作了一个国家下拉列表,当您从选择列表中选择国家时,我使用 javascript 将国家 ID 发送到状态函数:

$("#Country").change(function () {
    var Index = $(this).val();
    $.ajax({
        url: '/Company/State',
        type: "POST",
        dataType: 'html',
        data: { CountryId: Index },
        success: function (data) {
            $('#State').empty();
            $('#State').append($('<option>').attr("value", "").text("Select state"));
            var state = JSON.parse(data)["state"];
            for (var i = 0; i < state.length; i++) {
                $('#State').append($('<option>').attr("value", state[i].id).text(state[i].name));
            }
        }
    });

然后我的下拉列表不起作用,我收到以下错误,我的下拉列表没有显示任何内容:

"Failed to load resource: the server responded with a status of 400 (Empty or invalid anti forgery header token.)"

当我禁用防伪令牌时,一切正常

 [HttpPost]
 [DisableAbpAntiForgeryTokenValidation]
 public string State(GetStateInput input)

我的问题是:

我们需要 antiforgerytoken,但我们无法禁用它,那么我如何在不禁用 antiforgerytoken 的情况下克服错误?

【问题讨论】:

标签: javascript c# asp.net aspnetboilerplate


【解决方案1】:

最好是add this 在您的_Layout.cshtml 或视图中:

@{
    SetAntiForgeryCookie();
}

或者,intercept XMLHttpRequest:

(function (send) {
    XMLHttpRequest.prototype.send = function (data) {
        this.setRequestHeader(abp.security.antiForgery.tokenHeaderName, abp.security.antiForgery.getToken());
        return send.call(this, data);
    };
})(XMLHttpRequest.prototype.send);

【讨论】:

    猜你喜欢
    • 2010-12-17
    • 2020-10-20
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    相关资源
    最近更新 更多