Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jQuery将数据模型发布到MVC4时出现安全错误_Jquery_Asp.net_Ajax_Json_Asp.net Mvc 4 - Fatal编程技术网

使用jQuery将数据模型发布到MVC4时出现安全错误

使用jQuery将数据模型发布到MVC4时出现安全错误,jquery,asp.net,ajax,json,asp.net-mvc-4,Jquery,Asp.net,Ajax,Json,Asp.net Mvc 4,我有一个具有以下签名的MVC4控制器: [HttpPost] public JsonResult SubmitPage(PageSubmissionModel model) { ... return Json(result); } 其中,返回模型为简单模型: public class Page { public Guid PageId { get; set; } public Guid SurveyId { get; set; } public int P

我有一个具有以下签名的MVC4控制器:

[HttpPost]
public JsonResult SubmitPage(PageSubmissionModel model)
{
   ...
   return Json(result);
}
其中,返回模型为简单模型:

public class Page 
{
    public Guid PageId { get; set; }
    public Guid SurveyId { get; set; }
    public int PageNo { get; set; }
    public string Title { get; set; }
    public string Introduction { get; set; }
}
或JSON编码的url字符串:

return Json(new {
        RedirectTo = Url.RouteUrl(route.RouteName, route.RouteValues)
});
使用以下jQuery方法从客户端调用此控制器:

ajaxPost: function (responseData, callback) {
    $.ajax({
        type: "POST",
        url: ""/Surveys/Ajax/SubmitPage",
        data: JSON.stringify(data),
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        cache: false,
        success: function (data) {
            if (typeof callback === 'function') {
                callback(data);
            }
        },
        error: function (xmlHttpRequest, errorMessage, exception) {
            var msg = "Problem calling " + url + "()\r\n" + errorMessage;
            alert(msg);
        }
    });
}
其中,数据参数是一个JavaScript对象,构造如下:

responseData = {
    SurveyResponseId: 23,
    SubscriberResponseId: 47,
    PageId: 1,
    Responses: [
        {id: 24, value: "Tom" },
        ....
    ]
  };
运行此代码时,出现以下服务器错误:

此请求已被阻止,因为在GET请求中使用敏感信息时,可能会向第三方网站披露敏感信息

研究这个错误()我感到困惑,因为据我所知,由Fiddler产生的客户端正在发布JavaScript模型,所以我不明白服务器为什么抛出GET请求错误。此外,控制器还标记有[HttpPost]属性


如果有人能帮忙,我们将不胜感激。

请尝试下面的代码

[HttpPost]
public JsonResult SubmitPage(PageSubmissionModel model)
{
   ...
   return Json(result,JsonRequestBehavior.AllowGet);
}

请尝试下面的代码

[HttpPost]
public JsonResult SubmitPage(PageSubmissionModel model)
{
   ...
   return Json(result,JsonRequestBehavior.AllowGet);
}

多亏了巴尔多早些时候的评论,我才知道这里发生了什么

在某些情况下,客户端脚本构建的数据模型为模型分配了错误的数据值。这可能会在服务器上导致未捕获的异常,其错误消息(我认为)会导致GET异常

通过加强初始模型验证并在控制器中添加一些更健壮的错误管理,我能够识别提交模型中的错误,并因此将其追溯到其(JavaScript)构造函数


最终,这个问题表明需要能够在开发过程中完全复制生产环境,我在本例中还没有很好地实现这一点。一旦我可以在调试器下复制问题,就很容易识别。

多亏了Bardo之前的评论,我已经追踪到了这里发生的事情

在某些情况下,客户端脚本构建的数据模型为模型分配了错误的数据值。这可能会在服务器上导致未捕获的异常,其错误消息(我认为)会导致GET异常

通过加强初始模型验证并在控制器中添加一些更健壮的错误管理,我能够识别提交模型中的错误,并因此将其追溯到其(JavaScript)构造函数


最终,这个问题表明需要能够在开发过程中完全复制生产环境,我在本例中还没有很好地实现这一点。一旦我可以在调试器下复制问题,就很容易识别。

您检查过请求的整个生命周期了吗?我建议您检查它,例如通过firebug,并确认请求是通过POST发出的,并且当您认为返回错误即将出现时,返回错误正在出现。让我们知道结果。你检查过你的请求的整个生命周期了吗?我建议您检查它,例如通过firebug,并确认请求是通过POST发出的,并且当您认为返回错误即将出现时,返回错误正在出现。让我们知道结果。嗨,马赫什,恐怕我不想允许GET请求。我想确定的是为什么发布的数据似乎触发了GET安全错误。嗨,Mahesh,我恐怕不想允许GET请求。我想确定的是,为什么发布的数据似乎触发了GET安全性错误。