无论何时我在cf9中使用serializeJSON,它返回的JSON前缀为'//'。这非常令人沮丧,因为即使是coldfusion也会尝试将其解码为json。例如:
var a = { stuff = 'some content' };
a = serializejSON( a ); // the content of a is now: //{"STUFF":"some content"}
b = deserializeJSON( a );
上面的代码会抛出一个错误,上面写着'无法解析位置1的字符:/'。为了完成这项工作,我必须进行字符串替换并换出''作为'//'。
我似乎无法找到有关此问题的任何信息。这是某种我不理解的功能并且按预期工作的功能吗?我错过了某种修复此问题的设置吗?
答案 0 :(得分:8)
您可以在ColdFusion管理员中禁用此功能。转到服务器设置>设置并取消选中Prefix serialized JSON with
但如果关闭此功能,则会产生安全隐患。这有助于保护您的JSON数据免受跨站点脚本攻击,并在此StackOverflow answer
中进行了更深入的解释。答案 1 :(得分:0)
快速更新:一个人之前向Adobe提交了一个错误故障单,以便以属性的形式禁用SerializeJSON
函数的安全JSON前缀。
此后Adobe强制将useSecureJSONPrefix
属性添加到SerializeJSON
功能中。
通过这种方式,您可以在ColdFusion Administrator中保留安全设置,并在不需要的地方将其禁用。