Hi,

Current cxf:rsClient doesn't keep the origin host header by default.
But I think you can store the "Host" header value to "X-Forwarded-For"[1] 
header before you route the message into the camel-cxfrs producer.

Then your server should be able to get remote host from the "X-Forwarded-For"

For the question to get the remote request protocol information, I think you 
may need for the new coming camel release[2], as you can get the ServletRequest 
object with the header "HTTP.REQUEST" for the message header, and then you can 
set the header to as you want when forwarding the request. 

[1]http://en.wikipedia.org/wiki/X-Forwarded-For
[2]https://issues.apache.org/jira/browse/CAMEL-5405

-- 
Willem Jiang

FuseSource
Web: http://www.fusesource.com (http://www.fusesource.com/)
Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) 
(English)
          http://jnn.javaeye.com (http://jnn.javaeye.com/) (Chinese)
Twitter: willemjiang 
Weibo: willemjiang





On Thursday, August 23, 2012 at 12:29 AM, dvsridhar wrote:

> Hello,
> We are using Jboss 7.1.1 as our app server and we use camel as the routing
> layer. In the following configuration, vendorConsumer receives the request
> and redirects the request to the actual provider. In response the provider
> sends the data with corresponding hyper links. We create the hyperlink using
> HttpHeader host(Host) and context (org.apache.cxf.request.uri) key values.
> 
> However for the key (Host)) as part of http header we are only receiving the
> redirected URL Host (providerhost) but not the origin Host name
> (REMOTEHOST). *What's the best way to capture this?* I looked through all
> HttpHeaders i don't have any key contains such information except the
> breadcrumbId but its value has some unique format
> ([ID-REMOTEHOST-081075-2474-1345582555484-1-42],) not sure how far i can use
> this. Do I need use custom http headers for this.
> 
> Another question on the same lines, *how do i get the actual protocol
> information (http/https)?* 
> 
> *Note: *Some times we see the whole HttpHeader object it self is null. Not
> sure why Jboss is behaving that way.. 
> 
> *Log of the HTTP Header:*
> 12:10:05,166 INFO [com.dummy.common.utils.CamelCXFRedirectedURL]
> (http--0.0.0 .0-8080-1) {Accept=[text/html, application/xhtml+xml,
> application/xml;q=0.9, */* ;q=0.8], accept-encoding=[gzip, deflate],
> accept-language=[en-us, en;q=0.5], bre
> adcrumbid=[ID-REMOTEHOST-081075-2474-1345582555484-1-42],
> cache-control=[no-cache] , camelcxfrsresponsegenerictype=[class
> javax.ws.rs.core.Response], connection=[keep-alive], content-type=[*/*],
> host=[PROVIDERHOST-097052:8080],
> org.apache.cxf.request.uri=[/fdx-web-1.0/TestApp/Vendor/&3903&COOLEY/],
> pragma=[no-cache], user-ag ent=[Mozilla/5.0 (Windows NT 5.1; rv:14.0)
> Gecko/20100101 Firefox/14.0.1, Apache CXF 2.5.1]}
> 
> * /<camel:camelContext>
> <camel:route>
> <camel:from uri="cxfrs://bean://vendorConsumer"/>
> 
> <camel:removeHeader headerName="Content-Length" /> 
> <camel:to uri="cxfrs://bean://vendorProducer"/> 
> </camel:route>
> </camel:camelContext>
> 
> <cxf:rsServer id="vendorConsumer" address="/Redirect/Vendor"
> serviceClass="com.dummy.rest.resource.impl.VendorRSImpl" 
> loggingFeatureEnabled="true">
> <cxf:extensionMappings>
> <entry key="json" value="application/json"/>
> <entry key="xml" value="application/xml"/>
> </cxf:extensionMappings> 
> </cxf:rsServer>
> 
> <cxf:rsClient id="vendorProducer"
> address="http://providerhost:8080/FDX/TestApp/Vendor"; 
> serviceClass="com.dummy.rest.resource.api.VendorRS" inheritHeaders="true"
> loggingFeatureEnabled="true" >
> </cxf:rsClient>/*
> Thanks,
> Sridhar
> 
> 
> 
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/Camel-redirect-through-Rest-cxf-rsClient-not-keeping-orgin-host-information-in-Http-Headers-tp5717882.html
> Sent from the Camel - Users mailing list archive at Nabble.com 
> (http://Nabble.com).
> 



Reply via email to