我得到$ .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.
}
}
}
請重讀你的描述,並重新寫它,所以它是可以理解的。這是完全不明確的。你說它對每個請求都有效,但你希望它對每個請求都是動態的。不知道有什麼不同。 – charlietfl
爲了回答這個問題,你必須解釋你的腳本是如何組織的。是否只有一個腳本文件包含jQuery和您的自定義腳本,或者兩個腳本文件 - jQuery和您的自定義腳本等?我們需要知道它們是如何在瀏覽器中加載的。 – whirlwin
我首先獲得了jquery腳本,然後是我的自定義腳本文件 – user3270152