Hi

On 31/01/12 21:56, Alex Declent wrote:
Hi,

in my server setup I use iptables to set the source ip address of my
outgoing client requests
from a fake ip adresse to the correct one.
The remote service requires the domain name (example.com) as http-header
host field,
and some extra http-header fields.

Well, I decided to use an interceptor:

public class HttpHeaderInterceptor extends
AbstractPhaseInterceptor<Message> {
private String userId;
private String xAuthorizeRoles;
private String host;

public HttpHeaderInterceptor() {
super(Phase.POST_PROTOCOL);
}

@Override
public void handleMessage(Message message) throws Fault {
Map<String, List> headers = (Map<String, List>)
message.get(Message.PROTOCOL_HEADERS);
try {
headers.put("Host", Collections.singletonList(host));
headers.put("USERID", Collections.singletonList(userId));
headers.put("X-AUTHORIZE-roles",
Collections.singletonList(xAuthorizeRoles));
} catch (Exception ce) {
throw new Fault(ce);
}
}


A tcpdump shows that the header field host doesn’t contains the domain
name, but the other fields
are set correctly.

I tried different phases to add my interceptor into the outgoing chain,
without success.

Is there a possibility to set the http-header field host, if yes on
which phase
I have to set it?

Looks like that the custom Host is ignored and is overridden by HttpUrlConnection, given that the other custom headers are set Ok on the wire

Cheers, Sergey


Thanks, Alex


--
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Blog: http://sberyozkin.blogspot.com

Reply via email to