0

根据本文档,您可以在 Windows Server 2016 上配置 IIS 10 以写入自定义字段,只要“自定义字段中添加的数据总量不能超过 65,536 字节

我已经配置了一个自定义字段来将 Header 中的 cookie 和服务器变量中的另一个 cookie 写入日志,这工作得很好。

在此处输入图像描述

但是无论我在 maxCustomFieldLength 中输入什么值,都只会将 4096 个字节写入日志。

当我在 cookie 中发送 8k 数据时,我:

  1. 将 maxCustomFieldLength 设置为 4096 我在日志文件中只得到 2048 个字节。
  2. 将 maxCustomFieldLength 增加到 65536,我在日志文件中只得到 4096 个字节。

我已经使用 fiddler 验证了浏览器请求正在发送完整的 8k cookie 值,并且它们没有在客户端将值截断为 4096。

任何想法为什么 IIS 将 cookie 值截断为 4096 并且不遵守大于 4096 的 maxCustomFieldLength?

4

1 回答 1

0

现在已经对此进行了广泛的研究,我发现当它们小于 4k 时将所有 cookie 记录到标准 IIS 日志文件的唯一方法是编写一个自定义 HttpModule:

  1. 挂钩到 Begin_Request
  2. 从请求标头中读取原始 cookie 字符串
  3. 将其拆分为 < 4k 的块(将整个 cookie 保留为整个项目、名称和值)
  4. 将块写入自定义请求标头
  5. 使用一堆新的自定义字段配置 IIS 以将新的请求标头放入 iis 日志
于 2018-10-25T13:52:52.463 回答