2012-03-17 3 views
0

ユーザーのPOSTアクションをサイトのHTTPSバージョンにリダイレクトさせる簡単な方法があるかどうかを知りたかったと思います。たとえば、ユーザーはhttp://www.omegusprime.com/Request/ABCに行き、フォームを記入します。 SUBMITボタンの投稿をhttps://www.omegusprime.com/Request/ABCにするにはどうしたらいいですか?MVCのPOST URLをSSLに変更する方法

私はRequireHttpsAttributeを認識していますが、Html.BeginForm()の動作には影響しません。

答えて

1

フォームをHTTPSに直接送信できるのはなぜですか?

いずれにしても、MVCでHTMLHelperを使用する必要はありません。通常のHTMLを使用してフォームに書き込むことができます。だから、代わりにHtml.BeginForm(...)を使用しての、あなたはこれを使用することができます。それを行うには

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

... 

your form fields 

... 

</form> 
0

一つの方法は、at the routing levelです。しかし、スティーブのように、それはハッキーです。

技術的には、投稿をリダイレクトできません。あるアクションから別のアクションに転送することはできますが、リダイレクトを発行することはできません。リダイレクトはPOSTではありません。

これを行う最も良い方法は、フォームがHTTPS GETリクエストでレンダリングされることを確認することです。ページがhttps://whatever.comの場合、Html.BeginFormはそれに関連したURLを表示します。したがって、HTTPSページから相対URLへの投稿は、フォームがHTTPS経由でPOSTされることを意味します。

2番目のPaulの質問:なぜHTTP経由でフォームをレンダリングしたいのですが、HTTPS経由でPOSTするのですか?

1

私はポールの答えに同意します。通常のHTMLタグを書くことがここの唯一の方法だと思われます。

しかし、HTMLとMVCのURLヘルパーの組み合わせを使用することをお勧めします。 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"> 
関連する問題