$("#btnAjax").on("click", function () { var token = $("input[name='__RequestVerificationToken']").val(); $.ajax({ type: "post", dataType: "html", url: '@Url.Action("AntiAjax", "Home")', data: { message: $('#ajaxMsg').val() }, headers: { "RequestVerificationToken": token }, success: function (result) { alert(result); }, error: function (err, scnd) { alert(err.statusText); } }); });
这样就能处理上面出现的问题了!
使用三:自定义相关信息
可能会有不少人觉得,像那个生成的隐藏域那个name能不能换成自己的,那个cookie的名字能不能换成自己的〜〜
答案是肯定可以的,下面简单示范一下:
在Startup的ConfigureServices方法中,添加下面的内容即可对默认的名称进行相应的修改。
services.AddAntiforgery(option => { option.CookieName = "CUSTOMER-CSRF-COOKIE"; option.FormFieldName = "CustomerFieldName"; option.HeaderName = "CUSTOMER-CSRF-HEADER"; });
相应的,ajax请求也要做修改:
var token = $("input[name='CustomerFieldName']").val();//隐藏域的名称要改 $.ajax({ type: "post", dataType: "html", url: '@Url.Action("AntiAjax", "Home")', data: { message: $('#ajaxMsg').val() }, headers: { "CUSTOMER-CSRF-HEADER": token //注意header要修改 }, success: function (result) { alert(result); }, error: function (err, scnd) { alert(err.statusText); } });
下面是效果:
Form表单:
Cookie:
本文涉及到的相关项目:
关于CSRF相关的内容
Preventing Cross-Site Request Forgery (XSRF/CSRF) Attacks in ASP.NET Core
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
您可能感兴趣的文章: