2010-04-23 107 views
2

为什么会POST工作,但不是GET?我没有使用[AcceptVerbs(HttpVerbs.Post)]。我打电话这样的:

public ActionResult GetTest(string key) 
     { 
      var test = new { HelpTest = key }; 
      return Json(test); 
     } 

而且我做到这一点时,它的工作原理:

$.post("/Home/GetTest", { key: options.key }, 
         function(helpTest) { 
          alert(helpTest.HelpTest); 
         }); 

但不是这样的:

$.get("/Home/GetTest", { key: options.key }, 
          function(helpTest) { 
           alert(helpTest.HelpTest); 
          }); 

为什么会变成这样?使用GET返回的是XMLHttpRequest.status是500.我对此感到困惑吗?

回答

3

,这是因为返回JSON不返回JSON GET请求是不安全的,你应该避免,但如果你真的想用它使用JSON的过载设置为allowget则该属性将工作

return Json(data, JsonRequestBehavior.AllowGet); 
+0

谢谢 - 将JSON返回给GET请求有什么担忧? – iboeno 2010-04-23 19:49:13

+0

如果您有兴趣了解更多关于安全性的信息,可以查看此视频,这是开放的黑客攻击http://live.visitmix.com/MIX10/Sessions/FT05 – Chino 2010-04-24 14:46:09