2015-06-10 68 views
5

无论何时我在cf9中使用serializeJSON,它返回的JSON都会以'//'作为前缀。这非常令人沮丧,因为即使coldfusion也会尝试将其解码为json。例如:Coldfusion 9 serializeJSON()

var a = { stuff = 'some content' }; 
a = serializejSON(a); // the content of a is now: //{"STUFF":"some content"} 
b = deserializeJSON(a); 

上面的代码会抛出一个错误,提示“无法解析位置1上的字符:/'。为了使这项工作,我必须做一个字符串替换和换出''为'/'。

我似乎无法找到关于此问题的任何信息。这是否是某种我不明白的功能,并且按照预期工作?我是否缺少某种修复此问题的设置?

+4

您可以在服务器设置>设置下更改设置CF管理员。禁用“Prefix serialized JSON with”字段 –

+2

@MattBusche您应该将您的评论提升为答案。这绝对是''//来自哪里的。但请记住,建议禁用该设置会带来潜在的安全风险。只是为了让OP和其他人知道。 –

+1

@MattBusche - 你可否请更新你的答案,提及禁用该功能的[安全隐含](http://stackoverflow.com/questions/15501123/coldfusion-10-returnformat-json-adding-characters)?如果下一个阅读它的人不知道它并在不理解分支的情况下应用它。 – Leigh

回答

8

您可以在ColdFusion管理员中禁用此功能。转到服务器设置>设置并取消选中Prefix serialized JSON with

但是,如果关闭此功能,则存在安全隐患。这有助于防止跨站点脚本攻击你的JSON数据,并在此StackOverflow answer

0

快速更新解释更深入的:一个家伙以前提交一个bug票给Adobe以禁止在SerializeJSON功能的安全JSON前缀属性的形式..

Ticket [Fixed]

此后的Adobe有义务和添加的属性useSecureJSONPrefixSerializeJSON funtion。

Documentation

这样,你可以保持ColdFusion管理员的安全设置,只需禁用它,你不需要它。