我有一个正在处理从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调用)。
那是ColdFusion管理员中settings之下的服务器端设置。 带前缀的序列化JSON 。为了安全起见,默认情况下启用它。 保护Web服务,该服务通过为序列化的JSON字符串添加自定义前缀作为前缀,从而从跨站点脚本攻击中返回JSON数据。 。也许您已在ColdFusion 8服务器上将其关闭。我不建议您将其关闭。
请参阅Raymond Camden的这篇文章- 在jQuery和jQueryUI中使用前缀处理JSON
注意:此设置还可以通过在Application.cfc文件中进行设置secureJSON和设置来secureJSONPrefix针对每个应用程序进行设置。请参阅此处的文档- 应用程序变量。
secureJSON
secureJSONPrefix
secureJSON- 一个布尔值,它指定是否在ColdFusion函数以JSON格式返回以响应远程调用而返回的值之前添加安全前缀。
默认值是“管理员服务器设置” >“设置”页面中的“前缀序列化JSON”设置的值(默认为false)。您可以在cffunction标记中覆盖此值。
secureJSONPrefix- 如果secureJSON设置为true,则将安全前缀置于ColdFusion函数以JSON格式返回的值的前面,以响应远程调用。
默认值是“管理员服务器设置” >“设置”页面中的前缀序列化JSON设置的值(默认为//,即JavaScript注释字符)。