[ 
https://issues.apache.org/jira/browse/HTTPCORE-478?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17687253#comment-17687253
 ] 

Arturo Bernal commented on HTTPCORE-478:
----------------------------------------

[~olegk] 

 

Just to know if I'm on the right track and I'm not saying/doing anything 
foolish. Does this comply with the rules of the RFC? I've tried to follow the 
documentation and reflect everything it says but it's not easy to follow.

 

 

 
{code:java}
@Override
public void process(final HttpRequest request, final EntityDetails entity, 
final HttpContext context) throws HttpException, IOException {

    Args.notNull(request, "HTTP request");
    Args.notNull(context, "HTTP context");

    final ProtocolVersion ver = context.getProtocolVersion() != null ? 
context.getProtocolVersion() : HttpVersion.HTTP_1_1;

    final URIAuthority authority = request.getAuthority();
    if (authority == null) {
        throw new ProtocolException("Request authority not specified");
    }

    final int port = authority.getPort();

    final StringBuilder valueBuilder = new StringBuilder();
    valueBuilder.append("host=").append(authority.getHostName());

    if (port != -1) {
        valueBuilder.append(";port=").append(port);
    }

    final String protoValue = ver.getProtocol();
    if (protoValue != null) {
        valueBuilder.append("proto=").append(protoValue);
    }


    final EndpointDetails endpointDetails = (EndpointDetails) 
context.getAttribute(HttpCoreContext.CONNECTION_ENDPOINT);

    // Add the "for" property
    if (endpointDetails != null) {
        
valueBuilder.append(";for=").append(endpointDetails.getRemoteAddress().toString());
    }

    final String byValue = (String) 
context.getAttribute(X_FORWARDED_HEADER_NAME);
    if (byValue != null) {
        valueBuilder.append(";by=").append(byValue);
    } else {
        valueBuilder.append(";by=unknown");
    }

    final Header header = request.getFirstHeader(X_FORWARDED_HEADER_NAME);
    if (header != null) {
        request.removeHeader(header);
    }
    request.addHeader(new BasicHeader(X_FORWARDED_HEADER_NAME, 
valueBuilder.toString()));
    request.addHeader(new BasicHeader(FORWARDED_HEADER_NAME, 
valueBuilder.toString()));
}{code}

> Add "Forwarded" HttpRequestInterceptor
> --------------------------------------
>
>                 Key: HTTPCORE-478
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-478
>             Project: HttpComponents HttpCore
>          Issue Type: New Feature
>            Reporter: Gary D. Gregory
>            Priority: Major
>
> Add a "Forwarded" HttpRequestInterceptor to add the "Forwarded" HTTP header.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to