Asp.net Core Razor Pages中ajax使用
2022-06-20Razor Pages中ajax的Get使用
$.get("?handler=Filter", { id: $(this).attr("data-id") },
function (result) {
console.log(result);
});
$.ajax({
type: 'GET',
contentType: "application/json",
dataType: "json",
url: "?handler=Filter",
success: function (result) {
alert(result);
}
});
跳转到OnGetFilterAsync方法,url写的需要注意(handler=Filter)就可以了
Razor Pages中ajax的Post使用
Razor Pages 由防伪造验证保护,FormTagHelper 将防伪造令牌注入 HTML 窗体元素,防止跨站点请求伪造 (XSRF/CSRF)。
XSS:跨站脚本(Cross-site scripting,通常简称为XSS)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。
CSRF:跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。
由于以上的问题,直接ajax post请求会出错
解决办法1:
1. Startup.cs中的ConfigureServices方法增加
services.AddAntiforgery(o => o.HeaderName = "XSRF-TOKEN");
2. 你的.cshtml页面增加
@Html.AntiForgeryToken()
3. ajax post请求
$.ajax({
url: '?handler=Filter2',
type: 'POST',
contentType: 'application/json; charset=utf-8',
headers: {
"XSRF-TOKEN":$('input:hidden[name="__RequestVerificationToken"]').val()
},
success: function (result) {
alert(result);
}
});
解决方法2:这种方法是取消验证,不推荐使用
1. Startup.cs中的ConfigureServices方法增加
services.AddRazorPages().AddRazorPagesOptions(o=> { o.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute()); });
2. ajax post请求
$.ajax({
url: '?handler=Filter2',
type: 'POST',
contentType: 'application/json; charset=utf-8',
success: function (result) {
alert(result);
}
});