在 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。
抱歉解释得太长了,我的问题很简单:
- 当 IIS 以某种方式将 http 请求重定向到 https 时,它无法传递 POST 中的参数。是真的吗?我该如何预防?
- 我想了解网站是否在 SecureConnection 上发布,但似乎 "HttpContext.Current.Request.IsSecureConnection" 代码在 IIS 上不起作用。我的假设正确吗?有没有其他方法可以理解和决定我应该使用哪个标签(http 或 https)?
您不希望 POSTed 值从 http 重定向到 https,那将是一个安全漏洞。此功能的目的是迫使您面对在 clear-text 中发布值的应用程序中的任何内容,因为它们在重定向发生之前就已暴露。
在我的项目中,我有一个 .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。
抱歉解释得太长了,我的问题很简单:
- 当 IIS 以某种方式将 http 请求重定向到 https 时,它无法传递 POST 中的参数。是真的吗?我该如何预防?
- 我想了解网站是否在 SecureConnection 上发布,但似乎 "HttpContext.Current.Request.IsSecureConnection" 代码在 IIS 上不起作用。我的假设正确吗?有没有其他方法可以理解和决定我应该使用哪个标签(http 或 https)?
您不希望 POSTed 值从 http 重定向到 https,那将是一个安全漏洞。此功能的目的是迫使您面对在 clear-text 中发布值的应用程序中的任何内容,因为它们在重定向发生之前就已暴露。