У нас есть приложение asp.net mvc2. У меня установлен маршрут по умолчанию, который срабатывает под действием SecureRedirect. Когда пользователь переходит на http://www.mydomain.com, вызывается маршрут по умолчанию, вызывая действие SecureRedirect, которое делает простой:
return redirect("https://www.mydomain.com/secure/showlogin").
Обратите внимание, как я вызываю сайт через https в действии. Это прекрасно работает во всех браузерах на базе ПК, которые я тестировал. Он отлично работает на моем iPhone и iPad, но не работает на устройствах Android, таких как планшет DroidX или Samsung Galaxy (на базе Android). Я регистрирую действие SecureRedirect, и я нахожу, что Android никогда не срабатывает, пока работают устройства iOS и браузеры для ПК.
Для меня это не имеет смысла, поскольку на этих устройствах Android работает WebKit, как и на устройствах iOS.
Может ли кто-нибудь пролить свет на это? Я бы предпочел обработать перенаправление, используя действия вместо создания страницы default.aspx с жестко закодированным перенаправлением на https.
На самом деле трудно воспроизвести, но 2 вещи, которые я скажу, чтобы обеспечить вам реальный способ asp.net mvc.
Предполагая, что ваш контроллер называется "безопасным", а действие в защищенном контроллере называется "showlogin",
Перенаправить на свое действие, используя
public ActionResult SecureRedirect()
{
UrlHelper u = new UrlHelper(this.ControllerContext.RequestContext);
return Redirect(u.Action("showlogin", "secure", null, "https"));
}
Украсьте свой метод действия "showlogin" с помощью [RequireHttps]
чтобы обеспечить https. как это
[RequireHttps]
public ActionResult showlogin()
{
....
}
надеюсь это поможет