Что я здесь не так делаю?Мне нужно устанавливать три разных формата заголовков XSRF всякий раз, когда я делаю POST со страницы.
Когда я это делаю, все работает нормально, но как я попал в ситуацию, когда мне даже пришлось это сделать?Я чувствую, что неправильно подключил какую-то часть проекта?Или это сейчас нормально?
У меня есть тег <form>
на моей странице.И JS вызывается через событие jquery on("click")
.
JS:
$.ajax({
method: "POST",
dataType: "json",
data: JSON.stringify({ availsProps: dataObj }),
beforeSend: function (xhr) {
var xsrf = $('input:hidden[name="__RequestVerificationToken"]').val();
xhr.setRequestHeader("RequestVerificationToken", xsrf);
xhr.setRequestHeader("XSRF-TOKEN", xsrf);
xhr.setRequestHeader("X-XSRF-TOKEN", xsrf);
},
url: "/Freelancers/Calendar?handler=CalendarClick",
contentType:"application/json",
processData: false
});
В моем стартапе я пытался добавить services.AddAntiforgery
или нет.Мой обработчик POST требует, чтобы все 3 заголовка были установлены независимо от того, что.
services.AddAntiforgery(options =>
{
options.HeaderName = "X-XSRF-TOKEN";
});
In Configure:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseAuthentication();
app.UseMvc();
}
Если я отключу любой из заголовков xhr, я получу классический Требуемое значение заголовка защиты от подделки "RequestVerificationToken" ИЛИ "XSRF-TOKEN" ИЛИ "X-XSRF-TOKEN" отсутствует