您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

示例AJAX回调到ASP.NET Core Razor页面

示例AJAX回调到ASP.NET Core Razor页面

Razor Pages自动生成并验证防伪令牌以防止CSRF攻击。由于您没有在AJAX回调中发送任何令牌,因此请求失败。

解决此问题,您将必须:

public void ConfigureServices(IServiceCollection services)
{
  services.AddRazorPages();
  services.AddAntiforgery(o => o.HeaderName = "XSRF-TOKEN");
}

在AJAX回调中,我们添加了其他代码,以XSRF-TOKEN与请求标头一起发送。

$.ajax({
    type: "POST",
    url: '/?handler=YOUR_CUSTOM_HANDLER', // Replace YOUR_CUSTOM_HANDLER with your handler.
    contentType: "application/json; charset=utf-8",

    beforeSend: function (xhr) {
      xhr.setRequestHeader("XSRF-TOKEN",
        $('input:hidden[name="__RequestVerificationToken"]').val());
    },

    dataType: "json"
}).done(function (data) {
  console.log(data.result);
})

您可以通过添加来完成此操作<form>

<form method="post">
    <input type="button" value="Ajax test" class="btn btn-default" onclick="ajaxtest();" />
</form>

或使用@Html.AntiForgeryToken

@Html.AntiForgeryToken()
<input type="button" value="Ajax test" class="btn btn-default" onclick="ajaxtest();" />

在这两种情况下,Razor页面都会在页面加载后自动添加一个包含防伪令牌的隐藏输入字段:

<input name="__RequestVerificationToken" type="hidden" value="THE_TOKEN_VALUE" />
dotnet 2022/1/1 18:21:35 有286人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶