2013-04-16 34 views
7

Tôi đang làm việc trên giao diện CF với tiện ích mở rộng ChromeLogger (shameless plug), sử dụng tiêu đề HTTP để ghi dữ liệu từ ngôn ngữ phía máy chủ sang bảng điều khiển Chrome.Làm cách nào để tôi có thể đặt setHeader ghi đè lên tiêu đề hiện tại?

Trong quá trình yêu cầu, phương thức log() có thể được gọi nhiều lần. Đối với mỗi cuộc gọi, tôi đang viết tiêu đề ở định dạng mà ChromeLogger cần hiển thị dữ liệu chính xác. Trong CF10, điều này hoạt động tốt - mỗi cuộc gọi tiếp theo đến setHeader() sẽ ghi đè tiêu đề đã đặt trước đó có cùng tên. Tuy nhiên, trong CF9, tôi thấy nhiều tiêu đề có cùng tên.

này mẫu mã cho thấy vấn đề này:

<cfscript> 
pc = getPageContext().getResponse(); 
pc.setHeader("test-header", "value 1"); 
pc.setHeader("test-header", "value 2"); 
pc.setHeader("test-header", "value 3"); 
</cfscript> 

Trong CF9, tôi thấy ba tiêu đề có tên là "thử nghiệm tiêu đề," từng có giá trị riêng của họ. Trong CF10, tôi thấy một tiêu đề có tên "test-header", với giá trị là "value 3." Theo số Java docs cho phương pháp này, phương thức sau là chính xác (nhấn mạnh mỏ):

Đặt tiêu đề phản hồi với tên và giá trị đã cho. Nếu tiêu đề đã được đặt, giá trị mới sẽ ghi đè lên tiêu đề trước đó. Phương thức containsHeader có thể được sử dụng để kiểm tra sự hiện diện của một tiêu đề trước khi thiết lập giá trị của nó.

Sử dụng thẻ cfheader có cùng kết quả, có lẽ vì nó chỉ bao bọc phương pháp setHeader().

Tôi biết rằng tôi có thể tạo tiêu đề trong quá trình yêu cầu và sau đó gọi setHeader() một lần ở cuối thông qua onRequestEnd(), nhưng tôi muốn thành phần này được tự chủ càng tốt - ít người dùng cuối phải sửa đổi mã của họ để thực hiện nó, thì càng tốt.

Có cách nào khác trong CF9 ghi đè lên tiêu đề hiện tại không?

Trả lời

3

Có vẻ như nó có thể là lỗi trong ColdFusion 9. https://bugbase.adobe.com/index.cfm?event=bug&id=3041696 Lỗi này được nhập bởi Adam Cameron vào tháng 6 năm 2010 cho phiên bản 9.0 (theo như tôi có thể biết). Nó được liệt kê với trạng thái 'Trì hoãn' và lý do 'NotEnoughTime'.

+1

Cảm ơn, Miguel - thật đáng thất vọng. Tôi đã gửi cho Adam một tin nhắn trên Twitter để xem liệu anh ta có tìm được cách giải quyết hay không. Nếu không, tôi sẽ tiếp tục và chấp nhận điều này thay vì có một giải pháp thực sự. –

+0

@SeanWalsh - Tôi cho rằng điều đó có nghĩa là Adam không bao giờ tìm được cách giải quyết? –

+0

Thật không may, không - xem hai tweet của anh ở đây: https://twitter.com/daccf/status/324233254335033344 https://twitter.com/daccf/status/324233463597244416 –

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