我看过几篇关于绕过未正确传输的特殊字符的不同方法的帖子。但是,我想要一个更好、更简单的解决方案(可能找不到)。
我也有一个传递对象的函数。在对象(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 控制器方法的开头设置一个断点,它实际上永远不会到达断点。但如果转义或使用撇号,就可以了。
我将继续搜索并回复我的发现。
更新
遵循信息:获取“从客户端(&)检测到潜在危险的 Request.Path 值”
[ValidateInput(false)]
[HttpPost]
public ContentResult SaveTailoring(string json)
我将此添加到我的代码中,它解决了我将数据输入控制器的问题。我很乐意进行更多研究,并希望对这项技术的利弊有任何想法。