我有一个字符串,我在 Javascript 中执行 JSON.stringify(str) 。字符串是欧莱雅。
然而,由于这个变量在 JSON.stringify 发生之前被传递,它的值变成
L& #39;Oreal(& 和 # 之间没有空格),并且我发送到服务器的结果 JSON 字符串被识别为潜在危险,并且我收到服务器端错误。
我的问题是,如何避免撇号被 <'>; 替换 在 stringify 调用之前,还是解决此问题的替代方法?
编辑1:这是导致此问题的一些代码,它非常基本-
for (var rowIndex = 0; rowIndex < numrows; rowIndex++)
{
var cellValues = new Array();
for (var cellIndex=0; cellIndex < numCols; cellIndex++)
{
cellValues[cellIndex] = someInputArray[cellIndex]; //One of the values that gets populated here inlcudes the word L'Oreal
}
rowValues[rowIndex] = cellValues; //After this assignment, rowValues[0][3] which was earlier L'Oreal becomes L'Oreal
}
var jsonToSend = JSON.stringify(rowValues);
我尝试构建一个 jsFiddle,但在这个非常基本的示例中没有看到这种情况发生,它模仿了在实际代码中分配字符串的次数。
编辑2:我知道为什么现在会发生这种情况。我们对来自服务器的数据进行 HTML 编码,以避免 XSS 注入。虽然它显示正常,但当我将此数据转换为 JSON 时,它会导致格式错误的 JSON,服务器将其识别为潜在危险并引发异常。
服务器端代码 (.Net C#)- WebUtility.HtmlEncode(Data);
仍然不知道处理这个问题的好方法是什么。