【发布时间】:2013-05-15 19:09:57
【问题描述】:
我看过几篇关于绕过未正确传输的特殊字符的不同方法的帖子。但是,我想要一个更好、更简单的解决方案(可能找不到)。
我也有一个传递对象的函数。在对象(myObject)中,可以有一些带有特殊编号字符的文本(Bill’s,右单引号特殊编号字符)。
当我尝试发送数据时,它会阻塞。所以,然后我检查了我的代码,并在它接受用户输入的所有地方都进行了转义,并且在显示信息的地方没有转义。
问题:
- 可能缺少显示或接受用户输入的位置。
- 数据与转义字符一起存储。
我已经看到了特殊字符被清理的解决方案,但它需要一个特殊字符列表。或者我可以尝试解码后端的转义字符。
- 后端 - MVC .net C#
-
jQuery 版本:1.7.2
var json = $.toJSON(myObject); $.ajax({ type: 'POST', url: RootUrl + "Viewer/Save/", data: { "json": json }, async: false, contentType: "application/json; charset=utf-8", success: function (data) { var $("#display").(data); }, error: function (xhr, status, error) { alert(error); } });
更多信息:
json 字符串被传递给 MVC 控制器。方法如下所示。
public ContentResult Save(string json)
{
try
{
dynamic data = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<dynamic>(json);
}
catch (Excepteion ex)
{
// More code
}
}
我在 Chrome 调试器中收到的错误消息是:
- 500(内部服务器错误)
我想多了,我想知道后端是否有一个设置需要更改以接受特殊编号的字符。我之所以这么说是因为如果我在 MVC 控制器方法的开头设置一个断点,它实际上永远不会到达断点。但是如果转义或者使用撇号就可以了。
我将继续搜索并回复我的发现。
更新
关注信息:Getting "A potentially dangerous Request.Path value was detected from the client (&)"
[ValidateInput(false)]
[HttpPost]
public ContentResult SaveTailoring(string json)
我将此添加到我的代码中,它解决了我将数据输入控制器的问题。我很乐意进行更多研究,并希望对这种技术的利弊有任何想法。
【问题讨论】:
-
代码的哪一部分应该对
&#8217;之类的符号做一些事情(不能包含空格——问题中的那个)?因此,在序列化 HTML 之外,&#8217;只是七个 Ascii 字符。此外,如果您发布的数据希望以 UTF-8 格式传输,就像代码一样,您为什么要考虑转义字符? -
不,它不包含空格。是的,它可以序列化,但是当我在 MVC 控制器中收到它时,我得到一个错误 500,内部服务器错误。昨晚我在考虑这个问题,想知道这个问题是否更多地出现在后端,不确定。
-
你试过
ApiController吗?我不是 MVC 专家,但我发现在构建我的 jQuery ajax 方法时使用它们更容易,为页面/部分保持正常的Controllers。发布 UTF-8 我没想到需要任何特殊的转义,但我没有尝试过。 -
让我对此进行一些研究。我正在寻找一个问题最少的好解决方案。
标签: c# jquery ajax asp.net-mvc-4 special-characters