Один из способов безопасного переадресации без захваченной защищенной информации - это механизм перезаписи - при условии, что у вас нет маркерной/защищенной информации в самом URL-адресе (например, сеанс и т. Д.).
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="HTTPS Redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
Если проанализировать результаты этой конфигурации в Скрипач, вы заметите, что первоначальный небезопасные запрос не защищенной информации, даже если пользователь авторизован.
Вот запрос GET:
GET http://www.someurl.net/Dashboard HTTP/1.1
User-Agent: Fiddler
Host: www.someurl.net
Отклик только стандартный 301 завивка снова перенаправлять ничего обеспеченных перевели:
HTTP/1.1 301 Moved Permanently
Content-Type: text/html; charset=UTF-8
Date: Mon, 08 Dec 2014 13:07:53 GMT
Location: https://www.someurl.net/Dashboard
Server: Microsoft-IIS/8.0
X-Powered-By: ASP.NET
Content-Length: 162
Connection: keep-alive
<head><title>Document Moved</title></head>
<body><h1>Object Moved</h1>This document may be found <a HREF="https://www.someurl.net/Dashboard">here</a></body>
насчет заголовков HTTP? –
Также, как это можно сделать, не полагаясь на модуль перезаписи? –
Возможно, вы можете сделать чек в событии 'Application_BeginRequest' global.asax или даже создать фильтр MVC. Что касается HTTP-заголовков, то запрос GET представляет собой полный запрос GET, который я захватил на одном из моих сайтов-разработчиков после моего входа в систему, а затем запросил заблокированную страницу. Это все, что отправлено как часть запроса необеспеченным. –