2015-06-10 69 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管理員的安全設置,只需禁用它,你不需要它。