我想知道是否有簡單的方法可以使用戶的POST操作重定向到網站的HTTPS版本。因此,例如,用戶轉到http://www.omegusprime.com/Request/ABC並填寫表單。我如何使提交按鈕發佈到https://www.omegusprime.com/Request/ABC?如何將POST更改爲MVC中的SSL URL 4
我知道RequireHttpsAttribute,但不影響Html.BeginForm()的行爲方式。
我想知道是否有簡單的方法可以使用戶的POST操作重定向到網站的HTTPS版本。因此,例如,用戶轉到http://www.omegusprime.com/Request/ABC並填寫表單。我如何使提交按鈕發佈到https://www.omegusprime.com/Request/ABC?如何將POST更改爲MVC中的SSL URL 4
我知道RequireHttpsAttribute,但不影響Html.BeginForm()的行爲方式。
當您可以將表單直接發佈到HTTPS時,爲什麼要將表單發佈重定向到HTTPS?
在任何情況下,您不必在MVC中使用HTMLHelper,只需使用普通HTML寫出您的表單即可。因此,而不是使用Html.BeginForm(...)
你可以使用這個:
<form action="https://www.omegusprime.com/Request/ABC" method="POST">
...
your form fields
...
</form>
一種方式來做到這一點是at the routing level。但是就像史蒂夫說的那樣,這很黑。
技術上你不能重定向一個帖子。您可以將它從一個動作轉發到另一個動作,但不能發出重定向。重定向是GET而不是POST。
真的最好的方法是確保表單在HTTPS GET請求中呈現。如果頁面爲https://whatever.com,則Html.BeginForm將呈現相對於該頁面的URL。因此,從HTTPS頁面發佈到相對URL意味着該表單將通過HTTPS發佈。
我第二個保羅的問題:你爲什麼要通過HTTP呈現表單,但是通過HTTPS POST呢?
我同意保羅的回答。編寫標準的HTML標籤似乎是唯一的方法。
但我會建議使用HTML和MVC的URL Helper的混合。它確保網址是正確的,並使用正確的域名。當您擁有本地開發版本(即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">