HttpPost
속성은 POST
요청을 통해서만 작업에 액세스 할 수 있음을 나타내며 다른 요청 유형 (GET, PUT 등)으로부터 사용자를 보호합니다.
POST
요청도 속성없이 작동하지만 GET
요청도 있습니다! 이로 인해 GET 요청을 통해 데이터를 삽입, 업데이트 또는 제거하는 데이터베이스 쿼리가 노출 될 수 있습니다. 이는 나쁜 습관입니다. Google이 www.mysite.com/Users/Delete/{id}
페이지에 대한 색인을 생성한다고 가정하면 GET
요청을 수락하면 완전한 사용자 기반이 삭제 될 수 있습니다.
GET
은 데이터를 검색하고, POST
은 데이터를 전송합니다. 자세한 내용은 this question을 참조하십시오.
POST
요청을 시작하는 방법은 여러 가지가 있습니다.
$.post(
'@Url.Action("MyMethod", "Home")',
{
// data for ClassA.
name: $('#username').val(); // example.
},
function (result) {
// handle the result.
});
을하지만이 GET
요청 하지 않습니다 일 당신이 HttpPost
속성 액션을 장식하는 경우 :
@using (Html.BeginForm())
{
@Html.LabelFor(m => m.UserName);
@Html.TextBoxFor(m => m.UserName);
@Html.LabelFor(m => m.Password);
@Html.PasswordFor(m => m.UserName);
<input type="submit" value="Login" />
}
또는 jQuery.post()
를 통해를 :
당신은 Html.BeginForm()
내부 양식을 포장 할 수 있습니다 :
$.get(
'@Url.Action("MyMethod", "Home")',
function (result) {
// this will not work.
});
또는 브라우저를 통해 액세스하려고하는 경우. this blogpost도 참조하십시오.
게시 하시겠습니까? 의도적으로 get 요청을 통해 액션에 접근 할 수 없기 때문에'HttpPost' 속성으로 꾸미는 것이 그 이유입니다. –
'[HttpPost]'를 제거한 다음 브라우저에서 방문하십시오. – Nate