2014-09-15 4 views
2

수신 HTTP 요청 헤더의 값으로 속성을 설정하는 방법은 무엇입니까? 몇 가지 시도했는데 (다음 참조), 로그 값이 모두 null이므로 머리글 값을 정확하게 읽지 못합니다. 정말 신경 쓰이는 헤더 값은 X-EMPID입니다. wso2esb 사용 4.8.1.esb에서 http 헤더를 읽는 방법

coupleposts인데, 이것이 작동한다고 믿게 만들었지 만, 나는 아직 행운이 없습니다.

<proxy xmlns="http://ws.apache.org/ns/synapse" 
     name="getaccount2" 
     transports="https,http" 
     statistics="disable" 
     trace="disable" 
     startOnLoad="true"> 
    <target> 
     <inSequence> 
     <property name="empid" 
        expression="get-property('transport', 'X-EMPID')" 
        scope="default" 
        type="STRING"/> 
     <log level="custom"> 
      <property name="emp_id" expression="get-property('empid')"/> 
     </log> 
     <log level="custom"> 
      <property name="content_length" 
         expression="get-property('transport', 'Content-Length')"/> 
     </log> 
     <log level="custom"> 
      <property name="TRANSPORT_HEADERS" expression="get-property('TRANSPORT_HEADERS')"/> 
     </log> 
+0

BTW, 아파치에서 X-EMPID 값을 설정하고 리버스 프록시 (RequestHeader 사용)를 통해 ESB로 보내고 있습니다. 나는 헤더가 전송된다는 것을 안다 - 나는 패킷 포착을 수행하고 wireshark로 그것을 체크 아웃했다. –

+0

get-property ('transport', 'X-EMPID')는 'X-EMPID'라는 HTTP 헤더를 얻는 좋은 방법입니다. 속성이 null이면 WSO2 ESB가받은 요청에서이 헤더를 찾을 수 없습니다. ESB_HOME/bin에 tcpmon이 있습니다. WSO2 앞에 사용하여 요청 내용을 확인하십시오. –

+0

대단히 감사합니다. 나는 그 도구에 대해 몰랐습니다. 매우 도움이되었습니다. 그것은 내가 그것의 바닥에 도착하는 것을 도왔다. 나는 실제 서비스 엔드 포인트에 프록시를하지는 않았지만 관리 인터페이스에 프록시를 사용했다.하지만 추가 한 헤더를 모두 제거했다고 생각한다. 나는 기대했던대로 일할 것이있다. –

답변

10

XPath 변수를 사용하여 기술적으로 WSO2 ESB의 전송 헤더 인 HTTP 헤더에 편리하게 액세스 할 수 있습니다. X-EMPID이라는 HTTP 헤더를 읽는 가장 쉬운 방법은 다음 XPath를 사용하는 것입니다. $trp:X-EMPID 여기서 접두사 $trp 접두사는 콜론 뒤에 오는 부분이 전송 속성의 이름임을 나타냅니다. 당신이 재산 중재자을 사용

<log level="custom"> 
    <property name="X-EMPID value" expression="$trp:X-EMPID" /> 
</log> 

은 (이미 전송 속성에 저장됩니다) X-EMPID HTTP 헤더의 값으로 재산 myProperty을 설정하려면 : 헤더 값을 기록하려면 다음과 같은 로그 중재자를 사용할 수

<property name="myProperty" expression="$trp:X-EMPID" /> 

이 기능은 the WSO2 site에 설명되어 있습니다.

+0

감사합니다. 당신이 아마 추측했듯이, 나는 이것에 처음이에요. 나는 데이터 서비스 서버로 상당한 시간을 보냈지만 이것이 처음으로 esb를 사용하려고 시도한 것입니다. 배울 것이 많습니다. 훌륭한 제품! –

+0

@RonPeterson 문제는 없습니다. 내 대답이 도움이 되었다면 원하는 것을하십시오. 다른 사람들이 그것이 길의 길인지 알 수 있도록 대답을 받아 들였습니다. – Kallja

+0

이것은 [내가 해왔 던 작업] (http://ronsrabbits.blogspot.com/2014/09/using-shibboleth-attributes-from.html)입니다. Shibboleth를 사용하여 웹 서비스 보호. IdP를 지나기 위해 여전히 대화식 액세스가 필요하지만 Javascript에서 유용하다고 말합니다. 그냥 조각을 모두 모아서 일하는 것뿐입니다. –

관련 문제