Asp.net 如何将http请求转发到https url
就像问题所说的,如果我在我的网站上有这样一个页面的请求 像这样的事情 将重定向头(302)发送到浏览器 例如:Asp.net 如何将http请求转发到https url,asp.net,http,ssl,https,Asp.net,Http,Ssl,Https,就像问题所说的,如果我在我的网站上有这样一个页面的请求 像这样的事情 将重定向头(302)发送到浏览器 例如: Response.Redirect("WebForm2.aspx") 您标记了ASP.NET,因此我假设您使用IIS。在网站的Web根目录中创建一个文件,称之为SSL_Redirect.htm或类似的东西。将此Javascript放入其中: <Script language="JavaScript"> <!-- begin hide function goE
Response.Redirect("WebForm2.aspx")
您标记了ASP.NET,因此我假设您使用IIS。在网站的Web根目录中创建一个文件,称之为SSL_Redirect.htm或类似的东西。将此Javascript放入其中:
<Script language="JavaScript">
<!-- begin hide
function goElseWhere()
{
var oldURL = window.location.hostname + window.location.pathname;
var newURL = "https://" + oldURL;
query = '' + window.location;
position = query.indexOf('?');
if (position > -1)
{
query = query.substring(position + 1);
newURL = newURL + "?" + query;
}
window.location = newURL;
}
goElseWhere();
// end hide -->
</script>
现在,转到网站的属性。转到“客户错误”选项卡,查找403.4错误,并对其进行编辑。将其更改为使用/SSL_Redirect.htm的URL(或任何您命名的URL)。现在,在IIS管理中,找到该文件SSL_Redirect.htm,右键单击,转到属性。转到文件安全并取消选中该特定文件的需要SSL
你完成了。我认为这很简单
Response.Redirect("https://somename.something.here/Dada.aspx");
我更喜欢(a)不重定向本地连接(以简化VS下的开发),和(b)使用UriBuilder而不是字符串。替换,因为它更精确
if (!Request.IsLocal && !Request.IsSecureConnection) {
var ub = new UriBuilder(Request.Url);
ub.Scheme = Uri.UriSchemeHttps;
ub.Port = -1; // use default port for scheme
Response.Redirect(ub.Uri.AbsoluteUri, true);
return;
}
我记得不久前也处理过同样的问题。我想确保某些页面通过https,而其他页面则使用http。我还想确保,一旦访问者离开安全页面,访问不需要安全的页面,他们就会返回http。为此,我探索了两种选择: 第一个选项是,我可以使用免费项目重写配置文件中概述的特定页面:
# HTTP REQUIRED PAGES
RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_URI} !(/login\.aspx|/securepage\.aspx).*$ [NC]
RewriteCond %{HTTP_HOST} (.+)
RewriteRule ^(.*)$ http://%3$1 [R=301,L]
# HTTPS REQUIRED PAGES
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} (/login\.aspx|/securepage\.aspx).*$ [NC]
RewriteCond %{HTTP_HOST} (.+)
RewriteRule ^(.*)$ https://%3$1 [R=301,L]
使用此配置,我可以确保只有两个页面是安全的,而其余页面将是不安全的。我用这个选项得到了很好的结果
第二个选择是在我找到一个完整的解决方案,专门处理这个问题之后。这家公司是SanibelLogic,他们有一款名为。这个基于HTTPModule的解决方案正是我所需要的。它确实需要一点钱,但是如果你想要一些简单的实现和管理的东西,这可能是合适的。他们甚至提供源代码,如果你想编辑任何关于它
我使用这两个选项已有好几个月了,但最终还是使用了SSLRedirect产品,因为它简单
我希望这有帮助…我也遇到了同样的问题,但我发现使用纯IIS配置的解决方案不同 有两种方法: (1) 简单的方法就是将你的MyWebApp重命名为MyWebAppSSL。为后者启用SSL。然后在IIS中创建一个新的空文件夹,名为旧的MyWebApp。单击MyWebApp的属性,并在“目录”下选择“重定向到URL”,然后放入
http://MyServer/MyWebAppSSL
在那里。建议为其启用“永久重定向”。顺便说一下,您不需要单击MyWebApp的“创建web应用程序”按钮,因为它不是web应用程序,而只是重定向
(2) 这种简单的方法当然有一个缺点,即从现在起,应用程序将以一个新名称运行(在本例中以-SSL结尾)。如果我们需要保持它以相同的旧名称运行,也可以只通过配置IIS来实现,但我们必须以稍微不同的方式进行操作。我们必须在运行在不同端口的IIS上设置一个新的web空间。我发现这是一个很好的描述:。你需要做得更多。您还必须使用403.4的自定义错误。如果您这样做,您将丢失查询字符串等。答案旨在向提问者指出正确的方向,而不是一站式的复制、粘贴和编译解决方案。感谢您在其中创建了一个基页,并更改了整个项目的继承性,感谢manOne这方面的一个问题是,您只需要保护ASP.NET页面。目前,这是我必须处理的唯一问题,但感谢您的通知。对于不需要https的页面,您如何处理将访问者翻转回http?回答得很好!很好,简单的剪切和粘贴。