我创建了一个简单的C#asp.net Web服务函数,它返回一个字符串消息
我使用jquery ajax从页面调用它.
我使用jquery ajax从页面调用它.
C#:
[WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public string HelloWorld() { return DateTime.Now.ToString(); }
JS:
$(document).ready(function() { //alert("ready"); $.ajax({ type: "POST",contentType: "application/json; chatset=utf-8",url: "WebService2.asmx/HelloWorld",data: "{}",dataType: "json",success: function(msg) { //alert(msg); //doesnt works alert(msg.d); } }); });
我的问题是为什么警报(msg);不起作用
解决方法
这是一种安全加固机制.
从本质上讲,它有助于防御CSRF类型的攻击,攻击者从受害者网站读取JavaScript数组(从Json下载).他们可以通过覆盖JavaScript的Array类型来做到这一点. d导致返回的Json不是一个数组,从而使阵列覆盖对攻击者无效.
看到这篇伟大的博文:http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx