相关疑难解决方法(0)

JSON Hijacking在现代浏览器中仍然是一个问题吗?

我正在使用Backbone.js和Tornado Web服务器.在Backbone中接收集合数据的标准行为是作为JSON数组发送.

另一方面,由于以下漏洞,Tornado的标准行为是不允许使用JSON Array:

http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx

相关的一个是:http: //haacked.com/archive/2009/06/25/json-hijacking.aspx

当我真的是一个对象列表时,我不必在对象中包装我的JSON.

我无法在现代浏览器中重现这些攻击(即当前的Chrome,Firefox,Safari和IE9).与此同时,我无法确认现代浏览器解决这些问题的任何地方.

为了确保我既没有任何可能的糟糕的编程技能,也没有糟糕的谷歌搜索技能:

在现代浏览器中,这些JSON劫持攻击现在仍然是一个问题吗?

(注意:很抱歉可能重复:在现代浏览器上可以进行'JSON劫持'吗? 但由于接受的答案似乎没有回答这个问题 - 我认为现在是时候再问一遍并得到一些更明确的解释.)

javascript browser security json tornado

142
推荐指数
1
解决办法
3万
查看次数

为什么默认情况下不允许GET请求返回JSON?

作为ASP.NET MVC 2 Beta 2更新的一部分,默认情况下不允许JSON GET请求.看来您需要在从控制器返回对象之前将JsonRequestBehavior字段设置为.JsonRequestBehavior.AllowGetJsonResult

public JsonResult IsEmailValid(...)
{
    JsonResult result = new JsonResult();

    result.Data = ..... ;
    result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;

    return result;
}
Run Code Online (Sandbox Code Playgroud)

这背后的原因是什么?如果我使用JSON GET尝试进行远程验证,我应该使用不同的技术吗?

asp.net asp.net-mvc json

33
推荐指数
2
解决办法
2万
查看次数

ASP MVC将内容视为JSON

我有一个MVC应用程序,其中包含很多使用Ajax(jQuery)调用的Controller Actions,并返回部分视图内容,这些内容会更新屏幕的一部分.但我宁愿做的是返回类似这样的JSON.

return Json(new { 
    Result = true, 
    Message = "Item has been saved", 
    Content = View("Partial") 
});
Run Code Online (Sandbox Code Playgroud)

HTML只是Json的一个属性.这意味着我需要检索由View方法呈现的HTML.有没有简单的方法可以做到这一点,我看到的一些例子非常令人费解.

编辑:这个问题最初是针对ASP.NET MVC 1的,但如果版本2更容易,我想听听答案.

asp.net-mvc json partial

17
推荐指数
2
解决办法
1万
查看次数

如何从mvc控制器获取列表以使用jquery ajax进行查看

我需要从mvc控制器获取一个列表来查看使用jquery ajax.我怎样才能做到这一点.这是我的代码.它的警报错误消息.

在控制器中

 public class FoodController : Controller
    {
       [System.Web.Mvc.HttpPost]
        public IList<Food> getFoodDetails(int userId)
        {
            IList<Food> FoodList = new List<Food>();

                FoodList = FoodService.getFoodDetails(userId);

                return (FoodList);
        }
    }
Run Code Online (Sandbox Code Playgroud)

在视野中

function GetFoodDetails() {
        debugger;
        $.ajax({
            type: "POST",
            url: "Food/getFoodDetails",
            data: '{userId:"' + Id + '"}',
            contentType: "application/json;charset=utf-8",
            dataType: "json",
            success: function (result) {
                debugger;
                alert(result)
            },
            error: function (response) {
                debugger;
                alert('eror');
            }
        });

    }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

javascript ajax asp.net-mvc jquery jquery-ajaxq

12
推荐指数
2
解决办法
6万
查看次数

无法使用来自ajax调用的返回列表

我正在尝试获取一个带有对C#方法的AJAX调用的列表,并使用jQuery显示其项目,但我无法做到.这是我得到的:

public string test()
{
    return "test ok";            
}

$.ajax({
    type: "POST",
    url: "Computer/test",
    success: function (data) {
        alert(data);
    },
    error: function () {
        alert("error");
    }
});
Run Code Online (Sandbox Code Playgroud)

这按预期工作,我得到一个'test ok'字符串的警报.但是,如果我尝试返回一个列表,我无法在jquery中遍历它.

public List<string> testList()
{
    List<string> test = new List<string>;
    test.Add("test1");
    test.Add("test2");
    return test;
}

$.ajax({
    type: "POST",
    url: "Computer/testList",
    dataType: "json",
    success: function (data) {
        var list = data.d;
        $.each(list, function (index, item) {
            alert(item);
        });
    },
    error: function (xhr) {
        alert(xhr.responseText);               
    }
});
Run Code Online (Sandbox Code Playgroud)

使用此代码,我收到以下错误:

System.Collections.Generic.List`1 [System.String]

希望你能帮助我,谢谢.

c# ajax asp.net-mvc jquery

6
推荐指数
1
解决办法
2万
查看次数

AJAX和c#mvc控制器获得bool

我已经坚持了一段时间了.我试图通过ajax从我的控制器发送一个bool到视图.我尝试了几种不同的教程和方法,但似乎无法检索一些简单的数据.我希望有人能解释我做错了什么.

这是我的代码:

阿贾克斯:

$(document).ready(function () {

$.ajax({
    "url": "/social/checkfollow",
    "type": "GET",
    "dataType": "json",
    "success":function(data) {

        console.log(data);
    },
    "error": function(data) {
        console.log(data.status +" "+ data.statusText);
    }
});

});
Run Code Online (Sandbox Code Playgroud)

和控制器:

   [HttpGet]
    public virtual ActionResult CheckFollow()
    {
        var pass = false;

        return Json(new {result = pass});
    }
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我不断收到500内部服务错误.我知道这是一个非常基本的问题,我非常感谢你的帮助.

c# ajax asp.net-mvc jquery

2
推荐指数
1
解决办法
800
查看次数

从MVC View调用Json

我不确定我在这里做错了什么.

我有一个列表,我正在创建超链接.我需要先将用户指向正确的页面,所以我做了一个getJson.

我的.cshtm文件中有以下代码:

            $.getJSON('/Home/GetLocType', { "locId": loc.locId },  
              function(result) {   
                result = Json.stringify(result);                


             if(result == '1')                     
             {

                $('<li><a id=' + loc.locId + ' href="/DataEntry"  rel="external">' + loc.locName + '</a></li>').appendTo("#btnList");

             }
             else
             {
                $('<li><a id=' + loc.locId + ' href="/DataEntry/PForm"  rel="external">' + loc.locName + '</a></li>').appendTo("#btnList");                    
             }
           });
Run Code Online (Sandbox Code Playgroud)

我在控制器中有以下代码:

    private JsonResult GetLocType(int locId)
    {
        int locationId = Convert.ToInt32(locId);            
        var result = db.Locations.Where(a => a.LocID == locationId).Select(a => a.TypeId);
        return Json(result);
    }
Run Code Online (Sandbox Code Playgroud)

我面临的问题是Json方法永远不会被调用.

c# asp.net-mvc-3

1
推荐指数
1
解决办法
1711
查看次数

自动完成结果不会显示在 ASP.NET MVC 部分视图中

我有以下脚本在我的 _layout 视图中呈现:-

$(document).ready(function () {
    $("input[data-autocomplete-source]").each(function () {
        var target = $(this);
        target.autocomplete({
            source: target.attr("data-autocomplete-source"), 
            minLength: 1, 
            delay: 1000
        });   
    });  
});
Run Code Online (Sandbox Code Playgroud)

我添加了以下字段以对其应用自动完成功能:-

<input  name="term" type="text" data-val="true" 
data-val-required= "Please enter a value."  
data-autocomplete-source= "@Url.Action("AutoComplete", "Staff")"  /> 
Run Code Online (Sandbox Code Playgroud)

现在,如果我将视图渲染为部分视图,则脚本将不会触发,并且不会执行自动完成,因此我在 ajax-success 中添加了自动完成,如下所示:-

$(document).ready(function () {
    $(document).ajaxSuccess(function () {
        $("input[data-autocomplete-source]").each(function () {
            var target = $(this);
            target.autocomplete({
                source: target.attr("data-autocomplete-source"), 
                minLength: 1, 
                delay: 1000
            });
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

现在添加AjaxSuccess操作方法后将被调用,当我检查 IE F12 开发人员工具上的响应时,我可以看到浏览器将收到 json 响应,但字段内不会显示任何内容(我的意思是自动完成结果不会显示)在局部视图上)?

编辑

负责自动完成的操作方法是:-

public async Task<ActionResult> AutoComplete(string term)
      { …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc autocomplete razor asp.net-mvc-4 asp.net-mvc-5

1
推荐指数
1
解决办法
2314
查看次数

使用正确的键名称添加 ModelState 错误

我有一个简单的模型,例如:

public class Employer 
{
    [Required(ErrorMessage = "Please specify id")]
    public int Id { get; set; }

    [MaxLength(256, ErrorMessage = "Max lenght should be less than 256")]
    [Required(ErrorMessage = "Please specify Name")]
    public string Name { get; set; }

    [Required(ErrorMessage = "Please specify id of organization")]
    public int OrganizationId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

那么控制器是:

public IHttpActionResult Post(Employer employer)
{
    if(!IsActiveOrganization(employer.OrganizationId))
    {
        ModelState.AddModelError(nameof(employer.OrganizationId), "The organization is not active!");
    }
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在尝试在创建新雇主之前验证模型。因此,当我传递无效模型时id,响应将如下:

{ …
Run Code Online (Sandbox Code Playgroud)

c# validation asp.net-mvc modelstate asp.net-web-api

1
推荐指数
1
解决办法
3114
查看次数

ResponseRedirect作为Json

如何创建一个返回ResponseRedirect的控制器函数,而不是将ResponseRedirect作为Json对象返回?

我想做这样的事情

 return Json(new { url = RedirectToAction("AccountMyProducts", "Account"), redirect = "true" });
Run Code Online (Sandbox Code Playgroud)

在我的jsonobject中获取重定向url.

c# asp.net-mvc asp.net-mvc-3

0
推荐指数
1
解决办法
2847
查看次数