在 SecureConnection 上从 http 重定向到 https 无法传递 POST 请求中的值。我怎样才能保存它们?

Redirecting from http to https on SecureConnection is unable to pass values in POST request. How can I preserve them?

在我的项目中,我有一个 .ashx 页面,它接受来自外部的 POST 请求,并使用以下代码收集一个字符串变量:

string infoPost = httpRequest["infoPost"].ToString();

此代码在我的本地或 IIS 服务器上运行完美。

当我将它发布到我无法控制的 IIS 服务器时,问题就开始了。不知何故,对象变空了,我在这段代码上遇到了 "Object reference not set to an instance of an object." 错误。

我做了一些研究,发现是 SecureConnection 设置导致了问题。 IIS 服务器将所有 "http" 请求转换为 "https",但在执行此操作时会丢失 infoPost 变量。我通过直接用 "https" 调用这个页面来测试这个想法,这次代码运行完美,我抓取了发布的字符串。

但我不想要硬编码的工作。我试图通过使用此代码了解网站是否设置为安全连接:

 string strSecure = "http://";
 if (HttpContext.Current.Request.IsSecureConnection)
     strSecure = "https://";

同样,此代码在我的本地运行良好,但不适用于我提到的 IIS。

抱歉解释得太长了,我的问题很简单:

您不希望 POSTed 值从 http 重定向到 https,那将是一个安全漏洞。此功能的目的是迫使您面对在 clear-text 中发布值的应用程序中的任何内容,因为它们在重定向发生之前就已暴露。