weixin_33739541 2015-01-03 17:48 采纳率: 0%
浏览 669

发出Ajax请求时$ .ajaxSetUp怎么不起作用?

我在自定义标题中用了$.ajaxSetUp()。当发出Ajax请求时,我期望Ajax将这些定义在$.ajaxSetUp中的头与该请求一起传递,但这没有发生。例如:我有两个按钮,我希望标题将与这两个事件一起发送,但实际并没有做到——如何将头与这些请求一起发送?

 function ajaxSetUp() {
    $.ajaxSetup({
        cache: false,
        headers: { "CustomHeader": "Value1" },
    });
}

$('#btn').click(function () {
    $.ajax({
        url: 'HOME/POSTSAMPLEACTION',
        type: "POST",
        data: { name: "test" },
        async: true,
        dataType: "json",
        //headers: {
        //    'VerificationToken': forgeryId
        //},
        success: function (returnVal) {
            alert(returnVal);
        },
        error: function (data) {
            alert("failed");
        },
    });
});


$('#btn1').click(function () {
   $.ajax({
    url: 'HOME/ADDACTION',
    type: "POST",
    data: { name: "test" },
    async: true,
    dataType: "json",
    //headers: {
    //    'VerificationToken': forgeryId
    //},
    success: function (returnVal) {
        alert(returnVal);
    },
    error: function (data) {
        alert("failed");
    },
   });

});

     [AjaxValidateAntiForgeryToken]
    public JsonResult PostSampleAction(string name)
    {
        return this.Json("Post Passed Validation -" + name);
    }

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Helpers;
using System.Web.Mvc;

 namespace AntiForgerySample
 {
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class AjaxValidateAntiForgeryTokenAttribute : FilterAttribute, IAuthorizationFilter
{
   public void OnAuthorization(AuthorizationContext filterContext)
    {
        try
        {
            if (filterContext.HttpContext.Request.IsAjaxRequest()) // if it is ajax request.
            {
                this.ValidateRequestHeader(filterContext.HttpContext.Request); // run the validation.
            }
            else
            {
                AntiForgery.Validate();
            }
        }
        catch (HttpAntiForgeryException e)
        {
            throw new HttpAntiForgeryException("Anti forgery token not found");
        }
    }

 private void ValidateRequestHeader(HttpRequestBase request)
    {
        string cookieToken = string.Empty;
        string formToken = string.Empty;
        string customHeader = string.Empty;
        string tokenValue = request.Headers["VerificationToken"]; // read the header key and validate the tokens.
        customHeader = request.Headers["CustomHeader"];
        if (!string.IsNullOrEmpty(tokenValue))
        {
            string[] tokens = tokenValue.Split(',');
            if (tokens.Length == 2)
            {
                cookieToken = tokens[0].Trim();
                formToken = tokens[1].Trim();
            }
        }

        AntiForgery.Validate(cookieToken, formToken); // this validates the request    token.
    }
}

}

  • 写回答

1条回答 默认 最新

  • 7*4 2015-01-03 18:13
    关注

    Try

    // default options
    $.ajaxSetup({
        cache: false,
        headers: { "CustomHeader": "Value1" },
        url: 'HOME/POSTSAMPLEACTION',
        type: "POST",
        data: { name: "test" },
        async: true,
        dataType: "json",
        success: function (returnVal) {
            alert(returnVal);
        },
        error: function (data) {
            alert("failed");
        }
    });
    
    $('#btn').click(function () {
      // pass custom options here , if required , 
      // to override default options at `$.ajaxSetup`
      $.ajax();
    });
    
    评论

报告相同问题?

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测