2

我在想我们如何才能找出页面是从哪个服务器提供的:我会这样做,例如在页面上放置一个隐藏变量,该变量具有处理它的服务器的 IP 或服务器名称。但是对于 asp.net ajax 请求我该怎么办:那些作为部分回发发生的请求?我必须将隐藏变量放在更新面板中,但是如果页面中有很多更新面板怎么办?

我查看了另一个SO 帖子,但解决方案适用于 iis 7。iis6 的等价物是什么?我们如何阅读标题?去哪里看?

4

1 回答 1

6

您可以通过 IIS MMC 打开站点的属性然后单击 HTTP 标头选项卡来设置 IIS6 自定义标头:

在此处输入图像描述

您还可以使用adsutil(在 中找到c:\InetPub\AdminScripts):

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

上面的命令将为默认网站配置 HTTP 标头。

使用时要小心,adsutil因为这将覆盖已配置的任何现有标头。

要设置多个标题,请执行以下操作:

cscript adsutil 设置 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");                 
  }
});
于 2011-06-26T12:47:16.337 回答