2013-03-19 18 views
5

Tôi có một ứng dụng mà tôi đang làm việc để chuyển đổi từ CF8 sang CF10 và một số CFC từ xa của tôi. "//" được định trước cho dữ liệu được trả về. Ví dụ dưới đây là một sản phẩm của một cấu trúc trả về:Coldfusion 10 returnformat = "JSON" thêm các ký tự

//{"SUCCESS":true,"ERRORS":[],"DATA":{"COLUMNS":["AUTHRESULT","SPID","EMAIL","RID"],"DATA":[[true,361541,"[email protected]",""]]}} 

Các chức năng tương tự chạy qua cùng CFC trên máy chủ CF8 cho:

{"ERRORS":[],"SUCCESS":true,"DATA":{"COLUMNS":["AUTHRESULT","SPID","EMAIL","RID"],"DATA":[[true,361541,"[email protected]",""]]}} 

Các CFC mà proxy tất cả các yêu cầu không có returnFormat = "JSON "- nhưng không có SerializeJSON() được gọi trong proxyCFC hoặc CFC được mở rộng từ proxyCFC.

Tôi không chắc chắn cách tốt nhất để xử lý việc này là gì. Cắt bỏ '//' trong phản ứng sẽ có thể nhưng nó không có vẻ "đúng". Tôi cần giải quyết nó vào cuối CF10 vì các chức năng này không chỉ được sử dụng trong ứng dụng của chúng tôi mà còn một số ứng dụng từ xa (và một số thông qua các bài viết http: // và một số thông qua các cuộc gọi jQuery Ajax).

Trả lời

9

Đó là cài đặt phía máy chủ trong ColdFusion admin, under settings. Mã JSON được tuần tự hóa với. Nó được kích hoạt theo mặc định để bảo mật. Bảo vệ các dịch vụ web, trả về dữ liệu JSON từ các cuộc tấn công tập lệnh chéo trang web bằng cách đặt trước các chuỗi JSON được tuần tự hóa với một tiền tố tùy chỉnh.. Có lẽ bạn đã tắt chức năng này trên máy chủ ColdFusion 8 của mình. Tôi không khuyên bạn nên tắt nó đi.

Xem bài đăng này từ Raymond Camden - Handling JSON with prefixes in jQuery and jQueryUI

Chú ý: Thiết lập này cũng có thể được thiết lập cho mỗi ứng dụng bằng cách thiết lập secureJSONsecureJSONPrefix trong tập tin Application.cfc của bạn. Xem tài liệu về điều đó tại đây - Application variables.

secureJSON - Giá trị Boolean chỉ định có thêm tiền tố bảo mật trước giá trị mà hàm ColdFusion trả về ở định dạng JSON để trả lời cuộc gọi từ xa hay không.

Giá trị mặc định là giá trị của cài đặt JSON tuần tự tiền tố trong Cài đặt máy chủ quản trị> Trang cài đặt (mặc định là false). Bạn có thể ghi đè giá trị này trong thẻ cffunction.

secureJSONPrefix - Tiền tố bảo mật để đặt trước giá trị mà hàm ColdFusion trả về ở định dạng JSON để trả lời cuộc gọi từ xa nếu cài đặt secureJSON là đúng.

Giá trị mặc định là giá trị của cài đặt JSON được tuần tự hóa trong cài đặt Máy chủ quản trị> Trang cài đặt (mặc định là //, ký tự nhận xét JavaScript).

+0

Thú vị - không nhận thức được điều đó. Vì vậy, điều này thực sự cần phải được xử lý trên trang gọi/ứng dụng bên sau đó để giữ cho nó an toàn. – Steve

+0

Có, đó sẽ là tốt nhất. Tôi đã làm một chút tìm kiếm và nó xuất hiện như là mặc dù các thiết lập quản trị tôi tham chiếu lần đầu tiên được giới thiệu với ColdFusion 9. Tôi đoán rằng giải thích lý do tại sao bạn không nhìn thấy điều này trên máy chủ ColdFusion 8 của bạn. –

+0

Và một lưu ý nhanh về điều này quá. Tôi đã dành rất nhiều thời gian cố gắng để có được mặt ajax jquery này làm việc. Lúc đầu, nó được đề nghị sử dụng ajaxSetup() với dataFilter và một regex để loại bỏ '//' khỏi các câu trả lời json. Sau nhiều thử nghiệm và lỗi có vẻ như jquery.validate() ngắt ajaxSetup() để dataFitler phải được đặt trong phần từ xa của các quy tắc xác nhận hợp lệ. – Steve

Các vấn đề liên quan