有关Html.AntiForgeryToken()的使用其实网上的说明很多了,比如http://blog.csdn.net/cpytiger/article/details/8781457

那么我们写的AJAX调用怎么办了,难道需要修改所有的ajax请求数据吗?我个人比较懒惰喜欢写一个通用的代码.其实原理很简单就是拦截ajax请求,然后追加自己的数据.注意在ajax传输数据的时候可以是String/object,所以这里需要处理一下:

if (typeof data !== "string") {
data = $.param(data);
}

一般我们都是在ready方法中拦截指定方法:

        var oldajax = $.ajax;
$.ajax = function () {
var len = arguments.length;
for (var i = 0; i < len; i++) {
var data = arguments[i].data;
var type = $.trim(arguments[i].type);
type = type.toLowerCase();
if (data && type=="post") {
var tokenstr = $(document.getElementsByName("__RequestVerificationToken")).val();
if (typeof data !== "string") {
data = $.param(data);
}
data = data + "&__RequestVerificationToken=" + tokenstr;
arguments[i].data = data;
}
}
oldajax.apply(null, arguments);
}

全部的js code 如下:

 $(function () {
var oldajax = $.ajax;
$.ajax = function () {
var len = arguments.length;
for (var i = 0; i < len; i++) {
var data = arguments[i].data;
var type = $.trim(arguments[i].type);
type = type.toLowerCase();
if (data && type=="post") {
var tokenstr = $(document.getElementsByName("__RequestVerificationToken")).val();
if (typeof data !== "string") {
data = $.param(data);
}
data = data + "&__RequestVerificationToken=" + tokenstr;
arguments[i].data = data;
}
}
oldajax.apply(null, arguments);
} $('#btn1').click(function () {
$.ajax({
type: "POST",
url: "home/SecurityPost",
// data: "name=John&location=Boston",
data: { "name": "John", "location": "Boston" },
success: function (msg) {
alert("Data Saved: " + msg);
}
}); }); });

Html.AntiForgeryToken() 防止CSRF攻击 的AJaX应用的更多相关文章

  1. 切记ajax中要带上AntiForgeryToken防止CSRF攻击

    在程序项目中经常看到ajax post数据到服务器没有加上防伪标记,导致CSRF被攻击,下面小编通过本篇文章给大家介绍ajax中要带上AntiForgeryToken防止CSRF攻击,感兴趣的朋友一起 ...

  2. 转:MVC Html.AntiForgeryToken() 防止CSRF攻击

    (一)MVC Html.AntiForgeryToken() 防止CSRF攻击 MVC中的Html.AntiForgeryToken()是用来防止跨站请求伪造(CSRF:Cross-site requ ...

  3. [转]MVC Html.AntiForgeryToken() 防止CSRF攻击

    [转]MVC Html.AntiForgeryToken() 防止CSRF攻击 本文转自:http://blog.csdn.net/luck901229/article/details/8261640 ...

  4. MVC Html.AntiForgeryToken() 防止CSRF攻击 - CSDN博客

    原文:MVC Html.AntiForgeryToken() 防止CSRF攻击 - CSDN博客 (一)MVC Html.AntiForgeryToken() 防止CSRF攻击 MVC中的Html.A ...

  5. [ASP.NET MVC]@Html.AntiForgeryToken() 防止CSRF攻击

    MVC Html.AntiForgeryToken() 防止CSRF攻击 MVC中的Html.AntiForgeryToken()是用来防止跨站请求伪造(CSRF:Cross-site request ...

  6. ajax中加上AntiForgeryToken防止CSRF攻击

    经常看到在项目中ajax post数据到服务器不加防伪标记,造成CSRF攻击 在Asp.net Mvc里加入防伪标记很简单在表单中加入Html.AntiForgeryToken()即可. Html.A ...

  7. 记得ajax中要带上AntiForgeryToken防止CSRF攻击

    经常看到在项目中ajax post数据到服务器不加防伪标记,造成CSRF攻击 在Asp.net Mvc里加入防伪标记很简单在表单中加入Html.AntiForgeryToken()即可. Html.A ...

  8. MVC Html.AntiForgeryToken() 防止CSRF攻击

    转自:http://blog.csdn.net/cpytiger/article/details/8781457 一.MVC中的Html.AntiForgeryToken()是用来防止跨站请求伪造(C ...

  9. 转载MVC Html.AntiForgeryToken() 防止CSRF攻击

    MVC中的Html.AntiForgeryToken()是用来防止跨站请求伪造(CSRF:Cross-site request forgery)攻击的一个措施,它跟XSS(XSS又叫CSS:Cross ...

随机推荐

  1. UML类图-聚合和组合的区别

    类图-组合和聚合 学习自 http://blog.sina.com.cn/s/blog_4ae8f77f0100ji5k.html http://blog.csdn.net/nodeathphoeni ...

  2. Xamarin iOS教程之警告视图

    Xamarin iOS教程之警告视图 Xamarin iOS警告视图 如果需要向用户显示一条非常重要的消息时,警告视图(UIAlertView类)就可以派上用场了.它的功能是把需要注意的信息显示给用户 ...

  3. BZOJ2190 [SDOI2008]仪仗队 [欧拉函数]

    题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图 ...

  4. TreeMap(红黑树)源码分析

    1. HashMap.Entry(红黑树节点) private static final boolean RED = false; private static final boolean BLACK ...

  5. Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) A. Neverending competitions 水题

    A. Neverending competitions 题目连接: http://codeforces.com/contest/765/problem/A Description There are ...

  6. FireDAC 下的 Sqlite [10] - 使用 R-Tree 搜索

    R-Tree 主要用于三维空间的搜索, 据说这种搜索算法非常之快, 哪怕百万条记录也是眨眼间的事! SQLite 支持 1-5 维, FireDAC 也提供了 TFDSQLiteRTree 控件以方便 ...

  7. VMware vmdk文件打开方法

    打开虚拟机设置——硬盘——映射,把虚拟机磁盘文件vmdk映射到系统中即可!

  8. 解决 PermGen space Tomcat内存设置(转)

    在使用Java程序从数据库中查询大量的数据或是应用服务器(如tomcat.jboss,weblogic)加载jar包时会出现java.lang.OutOfMemoryError异常.这主要是由于应用服 ...

  9. Data transfer from GPIO port to RAM buffer using DMA upon receiving a trigger signal on the timer capture input channel.

    Data transfer from GPIO port to RAM buffer using DMA upon receiving a trigger signal on the timer ca ...

  10. JTAG - Debug Cable Driver/Receiver