16

我正在使用 ARR 作为反向代理在 IIS 后面运行服务。我知道有x-forwarded-forx-arr-log-id标题被传递。但是,我想要的是传入的私钥,以便支持应用程序明确知道请求不是本地的(即使 ARR 服务器是)。我看过一些关于添加/替换服务器变量的帖子,但这似乎不是通过支持应用程序上的请求标头来实现的。

我猜肯定有一些 web.config 设置可以做到这一点,但到目前为止还没有找到它。

例子:X-PRIVATE-TOKEN: We are the children of Korn!

这样我就可以相信x-forwarded-for地址是实际地址,而不是简单地不信任所有代理请求的 IP 地址引用。

4

2 回答 2

20

IIS.net提供的答案似乎是相关 URL 重写模块的一部分:

请求标头的设置使用与服务器变量相同的机制,但具有特殊的命名约定。如果集合中的服务器变量名称以“HTTP_”开头,那么这将导致根据以下命名约定设置 HTTP 请求标头:

名称中的所有下划线 ("_") 符号都将转换为破折号 ("-")。所有字母都转换为小写。“HTTP_”前缀被移除例如,以下配置用于设置请求的自定义 x-original-host 标头:

<set name="HTTP_X_ORIGINAL_HOST" value="{HTTP_HOST}" />

于 2013-04-09T10:24:09.413 回答
10

尝试:

<rule name="myRule_01">
  ...
  <serverVariables>
    <set name="HTTP_X_PRIVATE_TOKEN" value="We are the children of Korn!" />
  </serverVariables>
  ...
</rule>

http 请求的标头字段将是:x-private-token

于 2014-11-27T15:31:35.633 回答