Переключитесь на SSL, используя относительный URL-адрес

StackOverflow https://stackoverflow.com/questions/1849683

  •  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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top