Переключитесь на SSL, используя относительный URL-адрес
-
13-09-2019 - |
Вопрос
Я хотел бы создать относительную ссылку, которая переключает текущий протокол с http к https.В последнем месте, где я работал, на сервере было что-то настроено, чтобы вы могли это реализовать, но я мало что об этом помню и никогда не знал, как это работает.
Причина этого в том, что мне не нужно будет жестко запрограммировать имена серверов в файлах, которые необходимо перемещать между производственной средой и средой разработки.
Есть ли способ, чтобы это работало в IIS 6.0?
Редактировать:
Я использую .NET, но создаваемая мной «ссылка» не будет генерироваться динамически.Если вам действительно нужны подробности, я использую макрос перенаправления в Umbraco, который требует передачи URL-адреса.
Решение 5
В итоге мы купили ISAPI Rewrite для выполнения перенаправления на уровне веб-сервера для определенных URL-адресов.Это не совсем тот ответ, который я искал, когда задавал вопрос, но это то, что работает для нас.
Другие советы
Вот простое решение в VB.NET:
Imports System.Web.HttpContext
Public Shared Sub SetSSL(Optional ByVal bEnable As Boolean = False)
If bEnable Then
If Not Current.Request.IsSecureConnection Then
Dim strHTTPS As String = "https://www.mysite.com"
Current.Response.Clear()
Current.Response.Status = "301 Moved Permanently"
Current.Response.AddHeader("Location", strHTTPS & Current.Request.RawUrl)
Current.Response.End()
End If
Else
If Current.Request.IsSecureConnection Then
Dim strHTTP As String = "http://www.mysite.com"
Current.Response.Clear()
Current.Response.Status = "301 Moved Permanently"
Current.Response.AddHeader("Location", strHTTP & Current.Request.RawUrl)
Current.Response.End()
End If
End If
End Sub
Использование:
'Enable SSL
SetSSL(True)
'Disable SSL
SetSSL(False)
Вы можете добавить это в Page_Load каждой из ваших страниц.Или вы можете сделать что-то, как я, и создать список папок или страниц, которые вы хотите защитить, в вашем global.asax и соответствующим образом установить SSL в методе Application_BeginRequest.И это будет работать с относительными ссылками, и статус HTTP или HTTPS страницы всегда будет таким, каким вы указали в коде.
У меня есть этот код на нескольких сайтах.Но, например, если вы зайдете в https://www.techinsurance.com вы заметите, что он автоматически перенаправляется на http, поскольку домашнюю страницу не нужно защищать.И произойдет обратное, если вы попытаетесь попасть на страницу, которую необходимо защитить, например http://www.techinsurance.com/quote/login.aspx
Вы можете заметить, что я использую 301 (постоянный) редирект.Дополнительным преимуществом здесь является то, что поисковые системы будут обновлять свой индекс на основе кода перенаправления 301.
Какой язык/фреймворк вы используете?
У вас должна быть возможность создать свою собственную функцию, в которой вы передаете соответствующую страницу и на основе объекта HttpRequest и объекта Server (опять же, в зависимости от языка или платформы) определяете, что такое хост и URL-адрес, а затем просто перенаправляете на него. URL, но с https в качестве префикса.
Вот хороший Статья о кодпроекте для этого укажите определенные каталоги и файлы, для которых вы хотите использовать SSL.Он автоматически переключит их на https и наоборот в зависимости от ваших потребностей.
Я использовал это для своего проекта, и он работает очень хорошо.
Это тот же ответ, который я дал здесь:
Да, ты можешь.Я рекомендую эту бесплатную DLL с открытым исходным кодом, которая позволяет вам указать, какие страницы и папки нуждаются в SSL, а какие нет:
http://www.codeproject.com/KB/web-security/WebPageSecurity_v2.aspx
Таким образом, вы можете настроить безопасность страницы в своем web.config следующим образом:
<secureWebPages encryptedUri="www.example.com" unencryptedUri="www.example.com" mode="RemoteOnly" >
<files>
<add path="/MustBeSecure.aspx" secure="Secure" />
</files>
</secureWebPages>