HTTP 헤더를 사용하여 서버 측 언어의 데이터를 Chrome 콘솔에 기록하는 ChromeLogger 확장자 (shameless plug)의 CF 인터페이스에서 작업하고 있습니다.setHeader를 사용하여 기존 헤더를 덮어 쓰려면 어떻게해야합니까?
요청 과정 동안 log()
메서드를 여러 번 호출 할 수 있습니다. 각 통화에 대해 ChromeLogger가 데이터를 올바르게 표시하는 데 필요한 형식으로 헤더를 작성하고 있습니다. CF10에서는 이것이 잘 작동합니다. setHeader()
을 호출 할 때마다 이전에 설정 한 헤더를 동일한 이름으로 덮어 씁니다. 그러나 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에서 기존 헤더를 덮어 쓰는 다른 방법이 있습니까?
감사합니다. Miguel - 실망입니다. 나는 Adam에게 트위터에 메시지를 보내어 해결 방법을 찾았는지 확인했다. 그가하지 않았다면 나는 진정한 해결책이있는 대신에 이것을 받아 들일 것입니다. –
@SeanWalsh - 아담이 해결 방법을 찾지 못했다고 가정합니다. –
불행히도, 아니오 - 그의 두 가지 짹짹 여기에 참조하십시오 : https://twitter.com/daccf/status/324233254335033344 https://twitter.com/daccf/status/324233463597244416 –