Coldfusion 10 returnformat =“JSON”添加字符

时间:2013-03-19 13:39:55

标签: json coldfusion coldfusion-10

我有一个应用程序,我正在努力从CF8转换为CF10和我的一些远程CFC,其中返回的数据应该是JSON现在失败,因为似乎有一个“//”预先填写返回数据。例如,这是返回结构的输出:

//{"SUCCESS":true,"ERRORS":[],"DATA":{"COLUMNS":["AUTHRESULT","SPID","EMAIL","RID"],"DATA":[[true,361541,"user@domain.com",""]]}} 

在CF8服务器上运行相同CFC的相同功能给出:

{"ERRORS":[],"SUCCESS":true,"DATA":{"COLUMNS":["AUTHRESULT","SPID","EMAIL","RID"],"DATA":[[true,361541,"user@domain.com",""]]}} 

代理所有请求的CFC确实有returnFormat =“JSON” - 但是在proxyCFC或从proxyCFC扩展的CFC中没有调用SerializeJSON()。

我不确定处理这个问题的最佳方法是什么。在响应中修剪'//'是可能的,但它似乎并不“正确”。我需要在CF10结尾处理它,因为这些函数不仅在我们的应用程序中使用,而且还在一些远程应用程序中使用(有些是通过http://帖子,有些是通过jQuery Ajax调用)。

1 个答案:

答案 0 :(得分:9)

这是ColdFusion admin, under settings中的服务器端设置。 使用预先序列化JSON。默认情况下启用它以确保安全性。 保护Web服务,该服务通过在序列化的JSON字符串前加上自定义前缀来为跨站点脚本攻击返回JSON数据。。也许您已经在ColdFusion 8服务器上关闭了它。我不建议将其关闭。

请参阅Raymond Camden撰写的这篇文章 - Handling JSON with prefixes in jQuery and jQueryUI

注意:也可以通过在Application.cfc文件中设置secureJSONsecureJSONPrefix来为每个应用程序设置此设置。请参阅此处的相关文档 - Application variables

secureJSON - 一个布尔值,指定是否在ColdFusion函数以JSON格式返回的值前面添加安全性前缀以响应远程调用。

默认值是“管理员服务器设置”中的“前缀序列化JSON”设置的值。设置页面(默认为false)。您可以在cffunction标记中覆盖此值。

secureJSONPrefix - 安全前缀放在ColdFusion函数返回的值前面,如果secureJSON设置为true,则响应远程调用以JSON格式返回。

默认值是“管理员服务器设置”中的“前缀序列化JSON”设置的值。设置页面(默认为//,JavaScript注释字符)。