Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何将http请求转发到https url_Asp.net_Http_Ssl_Https - Fatal编程技术网

Asp.net 如何将http请求转发到https url

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

就像问题所说的,如果我在我的网站上有这样一个页面的请求

像这样的事情

将重定向头(302)发送到浏览器

例如:

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?回答得很好!很好,简单的剪切和粘贴。