2010-04-23 91 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