为什么 IE 从 HTTP 重定向到 HTTPS 时会重复查询参数

TJ *_*ler 3 iis internet-explorer redirect query-string

我们在 IIS 上托管一个网站,需要 HTTPS 请求,并且我遇到了一个与 Internet Explorer (IE) 如何处理 URL 重定向相关的奇怪错误。

如果初始请求是

http://my.domain.com/?param1=hello&param2=100

那么 IIS 强制请求重定向到 HTTPS 请求,但生成的请求是

https://my.domain.com/?param1=hello&param2=100&param1=hello&param2=100

在其他现代浏览器中,情况并非如此,请求会按预期重定向。

我们使用 URL 重写将请求重定向到 HTTPS

有其他人以前见过这个吗?有什么办法可以解决这个问题吗?

TJ *_*ler 7

在意识到 IIS 中发生重定向后,我查看了重写操作中的设置,并注意到该复选框Append query string已被选中。取消选中该框后,问题似乎已解决。查询字符串仍然存在于重定向中,但它们现在不会在 IE 中重复。

appendQueryString = "false"还可以通过添加到子项来在 web.config 的 xml 中更改该设置<action>

在进行更改之前的 web.config 文件中,没有任何内容明确指定 的状态appendQueryString,因此需要注意的是,重定向操作的默认行为似乎是附加查询字符串。

要更改 IIS 中的设置:

  1. 打开 IIS 管理器。
  2. 选择[有问题的网站]
  3. 在功能视图中,单击“URL 重写”。
  4. 选择“HTTP/S to HTTP Redirect”规则,点击右侧“入站规则 > 编辑”
  5. 向下滚动到编辑器窗格接近底部的“操作 > 附加查询字符串”复选框并取消选中它。
  6. 点击右侧的“应用”。

这里有大部分过程的漂亮图片