Как вы перенаправляете http-запрос на https URL? - PullRequest
3 голосов
/ 18 декабря 2008

Как говорится в вопросе, если у меня есть запрос на страницу на моем сайте, как это

http://somename.something.here/Dada.aspx

примерно так

https://somename.something.here/Dada.aspx

Ответы [ 6 ]

11 голосов
/ 18 декабря 2008

Я предпочитаю (а) не перенаправлять локальные соединения (чтобы упростить разработку под VS), и (б) использовать 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;
}
1 голос
/ 18 декабря 2008

Я думаю, что это так же просто, как наблюдать

Response.Redirect("https://somename.something.here/Dada.aspx");
1 голос
/ 18 декабря 2008

Вы пометили ASP.NET, поэтому я предполагаю, что вы используете IIS. Создайте файл в своем корне веб-сайта, назовите его 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, отредактируйте ее. Измените его, чтобы использовать URL-адрес /SSL_Redirect.htm (или как вы его назвали). Теперь в IIS Admin найдите этот файл, SSL_Redirect.htm, щелкните правой кнопкой мыши и перейдите в свойства. Перейдите в раздел «Безопасность файлов» и снимите флажок «Требовать SSL для этого конкретного файла».

Вы сделали.

0 голосов
/ 12 февраля 2010

У меня была та же проблема, но я нашел разные решения, используя только конфигурацию IIS.

Есть два способа:

(1) Простой способ - просто переименовать ваш MyWebApp в MyWebAppSSL , например. Включите SSL для последнего. Затем создайте новую пустую папку в вашем IIS, которая будет называться старой MyWebApp . Нажмите «Свойства» для MyWebApp и в разделе « Directory » выберите « Перенаправление на URL » и поместите туда http://MyServer/MyWebAppSSL. Для него рекомендуется включить « Постоянное перенаправление ». Вам не нужно нажимать кнопку " Создать веб-приложение " для MyWebApp , кстати, это не веб-приложение, а просто перенаправление.

(2) Простой способ, конечно, имеет недостаток, заключающийся в том, что теперь ваше приложение будет работать под новым именем (с -SSL , оканчивающимся в этом примере). Если нам нужно сохранить его работающим под тем же старым именем, это также будет возможно, просто настроив IIS, но нам придется действовать немного по-другому. Нам нужно будет настроить новое веб-пространство на нашем IIS, работающем на другом порту. Я нашел это хорошее описание: Как автоматически перенаправить на защищенный SSL сайт в IIS .

0 голосов
/ 07 февраля 2009

Я помню, что имел дело с теми же проблемами некоторое время назад. Я хотел убедиться, что некоторые страницы были через https, а остальные использовали http. Я также хотел быть уверен, что как только посетитель покинет защищенную страницу для страниц, которые не должны быть безопасными, он вернется к http. Для этого я исследовал два варианта:

Первый вариант состоял в том, что я мог использовать бесплатный проект .NET URLRewriter для перезаписи определенных страниц, указанных в файле конфигурации:

# 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 имеет продукт под названием SSLRedirect . Это решение на основе HTTPModule делает именно то, что мне нужно. Это стоит немного денег, но если вы хотите что-то простое в реализации и управлении, это может оправдать ваши расходы. Они даже предлагают исходный код, если вы хотите отредактировать что-либо об этом ...

Я использовал оба варианта в течение многих месяцев, но в итоге я использовал продукт SSLRedirect для его простоты.

Надеюсь, это поможет ...

0 голосов
/ 18 декабря 2008

Отправьте заголовок перенаправления (302) в браузер.

Пример:

Response.Redirect("WebForm2.aspx")

Статья о разнице между Server.Transfer и Response.Redirect

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...