2012-03-17 4 views
0

사용자의 POST 작업을 사이트의 HTTPS 버전으로 리디렉션하도록하는 쉬운 방법이 있는지 알고 싶습니다. 예를 들어 사용자는 http://www.omegusprime.com/Request/ABC으로 이동하여 양식을 채 웁니다. SUBMIT 버튼을 https://www.omegusprime.com/Request/ABC에 게시하려면 어떻게합니까?MVC에서 POST URL을 SSL URL로 변경하는 방법 4

저는 RequireHttpsAttribute를 알고 있지만 Html.BeginForm()이 작동하는 방식에는 영향을 미치지 않습니다.

답변

1

양식 게시를 HTTPS로 바로 보낼 수있는 경우 양식 게시를 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입니다. 그러나 Steve가 말했듯이, 그것은 해킹입니다.

기술적으로 소식을 리디렉션 할 수 없습니다. 하나의 작업에서 다른 작업으로 전달할 수 있지만 리디렉션을 발행 할 수는 없습니다. 리디렉션은 POST가 아닙니다.

정말 가장 좋은 방법은 HTTPS GET 요청에서 양식이 렌더링되는지 확인하는 것입니다. 페이지가 https://whatever.com이면 Html.BeginForm은 그에 상대적인 URL을 렌더링합니다. 따라서 HTTPS 페이지에서 상대 URL로 게시하면 양식이 HTTPS를 통해 게시됨을 의미합니다.

Paul의 질문 : 왜 HTTP를 통해 양식을 렌더링하려하지만 HTTPS를 통해 POST할까요?

1

나는 Paul의 답변에 동의합니다. 일반적인 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"> 
관련 문제