Оба - отличные ответы. Но если ваш веб-сайт размещен на общем сервере, вы, вероятно, не сможете изменить настройки IIS, поэтому решение на стороне клиента будет успешным.
Я столкнулся с той же проблемой, и этот пост спасает меня. Мои два цента на решение:
В jquery (по крайней мере, в последних версиях) вы можете использовать параметр с именем «header» для отправки этих заголовков без использования обратного вызова «beforeSend», и я думаю, что это может быть немного более чистым способом сделать то же самое. Вы также можете добавить другую информацию заголовка здесь:
$.ajax({
type: "POST",
url: postUrl + "/SomePageMethod",
data: "{searchString:\"" + escape(searchString) + "\"}",
contentType: "application/json; charset=utf-8",
headers: { "cache-control": "no-cache", "X-MicrosoftAjax" : "Delta=true" },
dataType: "json",
success: onSuccess,
error: onError
});
Я не знал об этом заголовке «Delta = true», а после небольшого исследования кажется, что это заголовок, который сообщает серверу, что ваш запрос является асинхронным запросом обратной передачи. .
Вызов AJAX вернет HTTP-статус 200 (вместо «Несанкционированный» 401) в обратном вызове «ошибка», что означает, что запрос сервера каким-то образом был успешным (хотя аутентификация не удалась). Немного странно, но так оно и работает.
Надеюсь, это поможет.