определить, с какого сервера (в веб-ферме) поступил ajax-запрос asp.net? - PullRequest
2 голосов
/ 25 июня 2011

Я думал, как мы можем узнать, с какого сервера была получена страница: я бы сделал это, например, поместив на страницу скрытую переменную, которая имеет IP-адрес или имя сервера от сервера, с которого она была обработана. Но что я делаю для ajax-запросов asp.net: те, которые выполняются как частичная обратная передача? Мне бы пришлось поместить скрытую переменную в панель обновлений, но что, если на странице много панелей обновлений?

Я проверил еще одну ТАК сообщение , но решение было для iis 7. Что эквивалентно для iis6? И как мы можем прочитать заголовок? Где искать?

1 Ответ

6 голосов
/ 26 июня 2011

Вы можете установить пользовательские заголовки IIS6 через IIS MMC, открыв свойства сайта и нажав на вкладку HTTP Headers:

enter image description here

Вы также можете использовать adsutil (находится вc:\InetPub\AdminScripts):

cscript adsutil set w3svc/1/root/HttpCustomHeaders "X-Served-By:Server-001"

Приведенная выше команда настроит заголовки HTTP для веб-сайта по умолчанию.

Будьте внимательны при использовании adsutil, так как это перезапишет любые уже настроенные существующие заголовки.

Чтобы установить несколько заголовков, выполните:

cscript adsutil set w3svc/1/root/HttpCustomHeaders "X-Served-By:Server-001" "X-Powered-By:ASP.NET"

Обновление:

Что касается доступа к заголовкам ответа на клиенте, если выиспользуя панель обновления ASP.NET AJAX, затем добавьте этот сценарий в конец вашей страницы:

<script type="text/javascript" language="javascript">
  Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endPageRequest);

  function endPageRequest(sender, args) {

    var allHeaders = args._response._xmlHttpRequest.getAllResponseHeaders();
    var headers = allHeaders.split('\n');

    // At this point you have a string array of response headers.

    // Or you can get an individual header:
    var header = args._response._xmlHttpRequest.getResponseHeader("MyHeader");

  }
</script>

Это подключит к диспетчеру запросов страницы, так что, когда запрос Ajax завершится, вы также получите видимость нижележащегоОбъект XMLHttpRequest с копией заголовков ответа.

Вы можете сделать что-то подобное с jQuery:

$.ajax({
  url: "/Home/HeadTest",
  success: function (data, textStatus, xhr) {
    var header = xhr.getResponseHeader("MyHeader");                 
  }
});
...