c#-使用Asp.Net Mvc的Json.Net中的JsonRequestBehavior等效项
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-使用Asp.Net Mvc的Json.Net中的JsonRequestBehavior等效项,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1647字,纯文字阅读大概需要3分钟。
内容图文
![c#-使用Asp.Net Mvc的Json.Net中的JsonRequestBehavior等效项](/upload/InfoBanner/zyjiaocheng/674/33a8673d78294325a30e571ec3104122.jpg)
从ASP.NET MVC2开始,当您尝试不提供其他信息而返回Json结果时,将出现错误:
This request has been blocked because sensitive information could be disclosed to third party web sites when this is used in a GET request.
现在,您必须将属性JsonRequestBehavior设置为值AllowGet:
result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
我read on a post可以防止劫持.
我想知道Json.Net是否具有等效功能以防止此类攻击.
这是我创建Json结果的代码:
protected JsonNetResult JsonNet(object data)
{
JsonNetResult result = new JsonNetResult();
result.Data = data;
return result;
}
如果您想知道我在哪里找到JsonNetResult,here is a link.
非常感谢你.
解决方法:
您不需要它,因为您显示的自定义JsonNetResult中没有这样的测试.因此,如果您使用GET调用操作,您将永远不会遇到像标准JsonResult那样的异常.
如果需要,可以在自定义JsonNetResult属性上实现完全相同的属性.
public class JsonNetResult : ActionResult
{
public JsonNetResult()
{
SerializerSettings = new JsonSerializerSettings();
JsonRequestBehavior = JsonRequestBehavior.DenyGet;
}
public JsonRequestBehavior JsonRequestBehavior { get; set; }
....
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
throw new ArgumentNullException("context");
var httpMethod = context.HttpContext.Request.HttpMethod;
if (JsonRequestBehavior == JsonRequestBehavior.DenyGet &&
string.Equals(httpMethod, "GET", StringComparison.OrdinalIgnoreCase))
{
throw new InvalidOperationException("You can't access this action with GET");
}
...
}
}
并且如果您想明确允许特定操作:
protected ActionResult JsonNet(object data)
{
JsonNetResult result = new JsonNetResult();
result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
result.Data = data;
return result;
}
内容总结
以上是互联网集市为您收集整理的c#-使用Asp.Net Mvc的Json.Net中的JsonRequestBehavior等效项全部内容,希望文章能够帮你解决c#-使用Asp.Net Mvc的Json.Net中的JsonRequestBehavior等效项所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。