ASP.NET MVC 2 - jquery ajax 响应失败

Posted

技术标签:

【中文标题】ASP.NET MVC 2 - jquery ajax 响应失败【英文标题】:ASP.NET MVC 2 - Failed with jquery ajax response 【发布时间】:2011-01-21 23:55:05 【问题描述】:

我不明白这个错误,不要在“JsonResult Test()”中产生错误,我正在做其他项目作为ASP.NET MVC

谢谢

错误:

System.InvalidOperationException: This request has been blocked because sensitive information could be disclosed to third party web sites when this is used in a GET request. To allow GET requests, set JsonRequestBehavior to AllowGet.

[InvalidOperationException: This request has been blocked because sensitive information could be disclosed to third party web sites when this is used in a GET request. To allow GET requests, set JsonRequestBehavior to AllowGet.]
   System.Web.Mvc.JsonResult.ExecuteResult(ControllerContext context) +263733
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +10
   System.Web.Mvc.<>c__DisplayClass14.<InvokeActionResultWithFilters>b__11() +20
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +251
   System.Web.Mvc.<>c__DisplayClass16.<InvokeActionResultWithFilters>b__13() +19
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +178
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +314
   System.Web.Mvc.Controller.ExecuteCore() +105
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +39
   System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +7
   System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__4() +34
   System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21
   System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +12
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +59
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +44
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +7
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8678910
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

c#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Tesis.Controllers

    public class AnalysisSourceDataController : Controller
    
        //
        // GET: /AnalysisSourceData/

        public ActionResult Index()
        
            return View();
        

        public JsonResult Test()
        
            return Json(new  mymsg = "my msg" );
        
    

javascript

<script type="text/javascript">
    $(function() 
        $.getJSON("/AnalysisSourceData/Test", function(data) 
            alert(data.mymsg);
        );
    );
</script>

【问题讨论】:

【参考方案1】:

你不明白什么?这个错误几乎不能更具描述性。这是防止JSON hijacking的安全功能,你可以这样禁用它..

 return Json(new  mymsg = "my msg" , JsonRequestBehavior.AllowGet);

但你应该了解implications。

【讨论】:

我不明白,其他项目我不需要这个参数。 这是在 MVCv1 项目中随 ASP.NET MVC2 添加的功能,您不需要添加它。添加该功能只会让人们在通过 GET 公开 JSON 数据(有一些完全有效的应用程序)之前停下来思考他们在做什么。 谢谢,我想念文档 绝对不用担心“暴露” json 而不是 get。这是 MVC 团队的一个非常糟糕的选择。这不过是默默无闻的安全,众所周知,这什么都不是。 虽然这篇文章读起来很有趣,但我无法真正评论它有多大的关注度,但是默默无闻不是安全吗,默默无闻在哪里?我不认为这是一个非常糟糕的选择,提高意识,即使是一个小问题也是一个好主意,而且升级问题可以非常容易地解决。

以上是关于ASP.NET MVC 2 - jquery ajax 响应失败的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 2 + jQuery 灯箱 + 登录

ASP.NET MVC 2 - jquery ajax 响应失败

ASP.Net MVC在AspNet Mvc使用JQuery AutoComplete组件

ASP.NET MVC 2 使用 jQuery 加载部分视图 - 无客户端验证

ASP.NET MVC2 自定义 jQuery 验证:客户端

ASP.net MVC Core Razor 页面和 Ajax JQuery