7

我有一个应用程序,我正在将其从 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 调用)。

4

1 回答 1

12

这是ColdFusion 管理员中的服务器端设置,位于 settings 下序列化 JSON 的前缀为. 出于安全考虑,它默认启用。保护 Web 服务,通过在序列化的 JSON 字符串前加上自定义前缀,返回 JSON 数据免受跨站点脚本攻击。. 也许您已经在 ColdFusion 8 服务器上关闭了此功能。我不建议将其关闭。

请参阅 Raymond Camden 的这篇文章 -在 jQuery 和 jQueryUI 中处理带有前缀的 JSON

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

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

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

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

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

于 2013-03-19T13:42:27.963 回答