最近,我正在处理使用 IIS 的 Azure 托管 ASP .NET Core 应用程序上不需要的重定向的案例。我们遇到包含两个 HTTP/HTTPS 前缀的请求的问题。我输入了失败请求跟踪日志并看到了这一点(查看 RequestURL 值):
任何人都可以帮助我理解为什么会发生这种情况?它发生在请求进入重写管道之前,即使如此,我们也没有任何可能导致它的重写规则。
“我们遇到包含两个 HTTP/HTTPS 前缀的请求”
但在此之前,请快速阅读通读当前 IETF 规范的第 3 部分,该规范定义了 URI 的含义,并学习其语法组件的术语。
/http:/wp.pl
文本看起来像是新URI的开头,当脱离上下文时,它仍然被解释为传入请求的路径组件,因为这就是网络服务器编程要做的事情。
http:
还是 https:
。Host:
标头中单独发送。GET /path/goes/here
部分中发送。#fragment
部分根本不会发送到服务器。因此,在这种情况下,您在那里记录的请求完全有效,因为绝对 URI 或“根”URI 的路径组件中不禁止使用冒号(无论是否采用百分比编码)。 只有相对 URI 路径不能在其初始路径段中包含
:
,因为这会导致它们的格式不明确。