【发布时间】:2011-07-15 09:29:27
【问题描述】:
所以在我的代码中,我想检测我的登录页面是否被称为 http,并将其重定向到 https。
我知道有非代码方法可以给这只猫剥皮,但出于令人沮丧的技术原因,我支持在代码中这样做。
if (!Request.IsSecureConnection)
{
string redirectUrl = Request.Url.ToString().Replace("http:", "https:");
Response.Redirect(redirectUrl);
}
所以我把它放在我的Page_Load(...) 中,确保我的调试器使用真正的 IIS,而不是 VS2008s IIS,然后点击调试。
在调试器中,跳华尔兹,点击 Response.Redirect("https://localhost/StudentPortal3G/AccessControl/AdLogin.aspx"), 按 f5。
得到“Internet Explorer 无法显示网页,url 是 HTTP,不是 HTTPS。 没有得到信息性错误...同样的事情没有在调试器中运行。
那么我错过了什么?它似乎不是火箭科学,我在很多博客上都看到过类似的代码......
我做错了什么?我认为这一定是一个非常明显的 Rookie 错误,但我没有看到。
【问题讨论】:
-
在 IE 中关闭“显示友好的错误消息”,看看它是什么意思。如果“友好”(我用这个词很松散)错误消息被打开并且 IE 得到一个非 200 状态代码并且信息小于 512 字节,它就会打开盲注。
-
@Chris - 我关闭了该设置,但仍然出现相同的错误。任何想法如何获得信息错误?
-
@StackOverflowException - 我不确定我是否理解这个答案,你的意思是使用常量“Uri.UriSchemeHttps”而不是“http”和“https”?我两种方式都试过了。 .