2013-04-16 2 views
7

HTTP 헤더를 사용하여 서버 측 언어의 데이터를 Chrome 콘솔에 기록하는 ChromeLogger 확장자 (shameless plug)의 CF 인터페이스에서 작업하고 있습니다.setHeader를 사용하여 기존 헤더를 덮어 쓰려면 어떻게해야합니까?

요청 과정 동안 log() 메서드를 여러 번 호출 할 수 있습니다. 각 통화에 대해 ChromeLogger가 데이터를 올바르게 표시하는 데 필요한 형식으로 헤더를 작성하고 있습니다. CF10에서는 이것이 잘 작동합니다. setHeader()을 호출 할 때마다 이전에 설정 한 헤더를 동일한 이름으로 덮어 씁니다. 그러나 CF9에서는 같은 이름의 여러 헤더가 표시됩니다.

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

, 나는라는 이름의 세 가지 헤더 "테스트 헤더,"자신의 값을 각각 참조 :

이 샘플 코드는 문제를 보여줍니다. CF10에서는 "test-header"라는 헤더 하나에 "value 3"이라는 값이 있습니다. 이 방법에 대한 Java docs에 따르면 후자는 정확합니다 (강조 표시).

주어진 이름과 값으로 응답 헤더를 설정합니다. 헤더가 이미 설정된 경우 새 값이 이전 값을 덮어 씁니다. containsHeader 메소드를 사용해, 값을 설정하기 전에 헤더의 존재를 테스트 할 수 있습니다.

cfheader 태그를 사용하면 setHeader() 메서드를 그냥 래핑하기 때문에 동일한 결과가 나타납니다.

요청 과정에서 헤더를 작성한 다음 을 마지막에 onRequestEnd()을 통해 호출 할 수 있음을 알고 있습니다.하지만이 구성 요소를 최대한 자주 포함하고 싶습니다. 최종 사용자가 구현하기 위해 코드를 수정할 필요가 줄어들수록 성능이 향상됩니다.

CF9에서 기존 헤더를 덮어 쓰는 다른 방법이 있습니까?

답변

3

ColdFusion 9의 버그 일 수 있습니다. https://bugbase.adobe.com/index.cfm?event=bug&id=3041696이 버그는 2010 년 6 월에 9.0 버전에서 Adam Cameron에 의해 입력되었습니다 (내가 알 수있는 한). '지연된'상태와 'NotEnoughTime'의 이유로 나열됩니다.

+1

감사합니다. Miguel - 실망입니다. 나는 Adam에게 트위터에 메시지를 보내어 해결 방법을 찾았는지 확인했다. 그가하지 않았다면 나는 진정한 해결책이있는 대신에 이것을 받아 들일 것입니다. –

+0

@SeanWalsh - 아담이 해결 방법을 찾지 못했다고 가정합니다. –

+0

불행히도, 아니오 - 그의 두 가지 짹짹 여기에 참조하십시오 : https://twitter.com/daccf/status/324233254335033344 https://twitter.com/daccf/status/324233463597244416 –

관련 문제