Как изменить POST на SSL URL в MVC 4 - PullRequest
0 голосов
/ 17 марта 2012

Я хотел бы знать, существует ли простой способ заставить пользовательское действие POST перенаправить на HTTPS-версию сайта.Так, например, пользователь переходит к http://www.omegusprime.com/Request/ABC и заполняет форму.Как сделать так, чтобы кнопка SUBMIT отправлялась на https://www.omegusprime.com/Request/ABC?

Мне известно о атрибуте RequireHttpsAttribute, но это не влияет на поведение Html.BeginForm ().

Ответы [ 3 ]

1 голос
/ 06 ноября 2013

Я согласен с ответом Пола. Написание обычного HTML-тега, кажется, единственный способ.

Но я бы рекомендовал использовать смесь HTML и URL Helper из MVC. Это гарантирует, что URL-адрес правильный, и он использует правильное имя домена. Это преимущество, если у вас есть локальная версия для разработки (например, https://localhost/Request/ABC) и рабочая версия (https://www.omegusprime.com/Request/ABC).

VB пример:

<form action="@Url.Action("ABC", "Request", Nothing, "https")" method="post">
...
</form>

Должно выглядеть в C #:

<form action="@Url.Action("ABC", "Request", null, "https")" method="post">
1 голос
/ 17 марта 2012

Зачем вам перенаправлять пост формы в HTTPS, если вы можете просто сделать пост формы непосредственно в HTTPS?

В любом случае вам не нужно использовать HTMLHelper в MVC, вы можете просто использовать обычный HTML для написания вашей формы. Таким образом, вместо использования Html.BeginForm(...) вы можете просто использовать это:

<form action="https://www.omegusprime.com/Request/ABC" method="POST">

...

your form fields

...

</form>
0 голосов
/ 18 марта 2012

Один из способов сделать это - на уровне маршрутизации .Но, как говорит Стив, это глупо.

Технически вы не можете перенаправить сообщение.Вы можете переслать его от одного действия к другому, но вы не можете выполнить перенаправление.Переадресация ПОЛУЧАЕТСЯ, а не ПОЧТА.

Действительно лучший способ сделать это - убедиться, что форма отображается в запросе HTTPS GET.Если страница https://whatever.com,, то Html.BeginForm отобразит URL-адрес относительно этого.Поэтому публикация со страницы HTTPS на относительный URL-адрес будет означать, что форма POST помещена поверх HTTPS.

Второй вопрос Пола: почему вы хотите рендерить форму через HTTP, а POST - через HTTPS?

...