7

CF8 から CF10 への変換に取り組んでいるアプリがあり、返されるデータの前に "//" が付加されているように見えるため、返されるデータが JSON であるはずのリモート CFC の一部が失敗しています。たとえば、返された構造体の出力は次のとおりです。

//{"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() はありません。

これを処理する最善の方法がわかりません。応答の「//」を削除することは可能ですが、「正しい」とは思えません。これらの関数はアプリだけでなく、一部のリモート アプリでも使用されているため (一部は http:// 投稿を介して、一部は jQuery Ajax 呼び出しを介して)、CF10 側で対処する必要があります。

4

1 に答える 1

12

これは、 ColdFusion 管理画面の settings の下にあるサーバー側の設定です。 シリアル化された JSON の前に. セキュリティのため、デフォルトで有効になっています。シリアル化された JSON 文字列の前にカスタム プレフィックスを付けることで、クロスサイト スクリプティング攻撃から JSON データを返す Web サービスを保護します。. おそらく、ColdFusion 8 サーバーでこれをオフにしていたのでしょう。ただし、オフにすることはお勧めしません。

Raymond Camden のこの投稿を参照してください - jQuery および jQueryUI でプレフィックスを使用して JSON を処理する

注: この設定は、Application.cfc ファイルでsecureJSONとを設定することにより、アプリケーションごとに設定することもできます。secureJSONPrefixそれに関するドキュメントを参照してください -アプリケーション変数

secureJSON- ColdFusion 関数がリモート呼び出しに応答して JSON 形式で返す値の前にセキュリティ プレフィックスを追加するかどうかを指定するブール値。

デフォルト値は、「アドミニストレーター サーバー設定 > 設定」ページの「シリアライズされた JSON のプレフィックス」設定の値です (デフォルトは false)。この値は cffunction タグでオーバーライドできます。

secureJSONPrefix- secureJSON 設定が true の場合に、ColdFusion 関数がリモート呼び出しに応答して JSON 形式で返す値の前に付けるセキュリティ プレフィックス。

デフォルト値は、「アドミニストレーター・サーバー設定」 > 「設定」ページの「シリアライズされた JSON のプレフィックス」設定の値です (デフォルトは //、JavaScript コメント文字)。

于 2013-03-19T13:42:27.963 に答える