zoukankan      html  css  js  c++  java
  • asp.net mvc 在ajax中带上 AntiForgeryToken

    为了防止跨站点的请求伪造,asp.net mvc引入了AntiForgeryToken这个东西。
    原理简单说来就是每个session开始的时候发布一个token,之后的每次请求都会带上这个token,然后服务器端对其进行校验。

    使用方法也很简单

    1. 在html表单里加入:
      @Html.AntiForgeryToken()
      对应的html代码为
    <input name="__RequestVerificationToken" type="hidden" value="L5xNWJZ-rz5BowiAGZzA-O948cfJlTQpaEwlXppJEGWI8eBn3zvL_MIWZ7roMQE2iA86KRyvJEhnXX2DAVZij03coUZs09clOVhMBnBzzU81">
    
    1. 在对应的action上加上 [ValidateAntiForgeryToken]

    如何让ajax请求也能通过服务器端的token验证,自然是把token作为参数加到请求里:

    1. 增加一个表单
    <%-- used for ajax in AddAntiForgeryToken() --%>
    <form id="__AjaxAntiForgeryForm" action="#" method="post"><%= Html.AntiForgeryToken()%></form> 
    
    1. 增加一个用于获取页面中token的方法
    AddAntiForgeryToken = function(data) {
        data.__RequestVerificationToken = $('#__AjaxAntiForgeryForm input[name=__RequestVerificationToken]').val();
        return data;
    };
    
    1. 在ajax请求里把token带上
    $.ajax({
        type: "post",
        dataType: "html",
        url: $(this).attr("rel"),
        data: AddAntiForgeryToken({ id: parseInt($(this).attr("title")) }),
        success: function (response) {
            // ....
        }
    });
    

    stackoverflow原文

  • 相关阅读:
    [NOI2014]动物园
    2018.7.15模拟赛
    2018.7.13模拟赛
    [CodeForces]920F SUM and REPLACE
    [BZOJ3211]花神游历各国
    [GSS5] Can you answer these queries V
    [SPOJ1716] GSS3
    [HNOI2012]排队
    2018.7.10模拟赛
    7.3模拟赛
  • 原文地址:https://www.cnblogs.com/Serene/p/4632258.html
Copyright © 2011-2022 走看看