Iis 如何判断请求的URL是否是http上调用服务器的内容交换机后面的HTTPS?

Iis 如何判断请求的URL是否是http上调用服务器的内容交换机后面的HTTPS?,iis,asp-classic,web,https,Iis,Asp Classic,Web,Https,我有一个经典的asp网页,其中我在IIS框中使用MSXML2调用XML源。MSXML2需要一个完整的URL等。在我尝试在https URL上的内容开关后面的服务器上安装之前,这一切都很好 经过一些调试后,我发现内容交换机没有http通信的路径,因此对http url的调用失败。我能够修复这个问题,将目标url更改为https 由于这段代码在http和现在的https上都使用,我想在代码中切换URL类型,所以我使用了代码分叉 我认为这很容易,而且这会奏效 if Request.ServerVari

我有一个经典的asp网页,其中我在IIS框中使用MSXML2调用XML源。MSXML2需要一个完整的URL等。在我尝试在https URL上的内容开关后面的服务器上安装之前,这一切都很好

经过一些调试后,我发现内容交换机没有http通信的路径,因此对http url的调用失败。我能够修复这个问题,将目标url更改为https

由于这段代码在http和现在的https上都使用,我想在代码中切换URL类型,所以我使用了代码分叉

我认为这很容易,而且这会奏效

if Request.ServerVariables("HTTPS") = "off" then 
但是不,内容交换机持有证书,而不是计划http流量的web服务器

有谁能想到一种方法,我可以告诉什么完整的网址与https/http或任何其他方式,我可以修复它


非常感谢Paul

如果不详细了解您称之为“内容交换机”的设备,很难回答这个问题,不管它是什么

也许最好从这个简单的ASP页面开始:-

<%

Dim vntKey

For Each vntKey In Request.ServerVariables
    Response.Write vntKey & " = " & Server.HTMLEncode(Request.ServerVariables(vntKey)) & "<br />"
Next

%>

通过客户端上的HTTPS点击此按钮,出现的HTTP头列表可能会显示设备添加的一些附加自定义头,从而允许您做出所需的确定

编辑


另一种方法可能是将内部服务器配置为在端口80和(比如)8080上侦听。将反向代理配置为将443上到达的请求转发到服务器的端口8080。现在您可以检测HTTPS,因为请求到达内部服务器上的8080。

如果原始请求是通过HTTPS传入的,则需要修改内容开关以发送特殊的头。我们在我工作的地方使用Zeus ZXTM,我可以添加一个流量规则,如果请求以https开头,则添加一个名为“FROM_SSL”的头,其值为true。然后,我检查后端的头,而不是使用内置内容。

如果在SSL下尝试Request.ServerVariables(“服务器端口”),是否正确返回443?这可能有助于您首先给出使用完整URL而不是相对URL的原因?我想不出你这样做的理由,尽管我确信一定有一些场景是必要的。@Jakkwylde:这个问题描述了客户端和服务器之间的某种设备。设备正在执行某种反向代理操作。MSXML2需要有完整的URL,否则我会这样做。内容交换机是一个反向代理,它将所有HTTPS请求转换为HTTP到IIS服务器。所以我不能做正常的SSLtests@Pbearne:好的。许多反向代理将向它们传递到内部服务器的请求添加额外的头。上面的代码将允许您发现可能存在的任何问题,并可能有助于做出判断。