Skip to content

No user-agent set when communicating via proxy #1457

Open
@abatkin

Description

@abatkin

Expected Behavior

When communicating via an explicit (non-transparent) HTTP Proxy, the User-Agent header should be set to something like aws-sdk-java/whatever... (see UserAgentUtils.UA_STRING for the template)

Current Behavior

The User-Agent header is set to an empty string:

http-outgoing-1 >> "CONNECT sts.us-east-1.amazonaws.com:443 HTTP/1.1[\r][\n]"
http-outgoing-1 >> "Host: sts.us-east-1.amazonaws.com[\r][\n]"
http-outgoing-1 >> "User-Agent: [\r][\n]"
http-outgoing-1 >> "[\r][\n]"
http-outgoing-1 << "HTTP/1.1 200 Connection established[\r][\n]"
http-outgoing-1 << "[\r][\n]"

I believe this is due to the .setUserAgent("") in ApacheHttpClient.createClient().

Possible Solution

It would be nice for the User-Agent header to be set to something sensible in the client itself instead of the empty string (as outlined above). Later on in the (normal) request processing, the AWS SDK will set the User-Agent header itself, but that's only for the portion of the request that it actually handles (i.e. the SDK explicitly sets the header when making a request, whereas the setUserAgent() sets a property on the client itself, and that property is needed by HttpClient when talking to a proxy).

Steps to Reproduce (for bugs)

  1. Set up a proxy server
  2. Tell the SDK to use the proxy (either using the JDK standard System Properties or by setting proxyConfiguration() on the ApacheHttpClient's builder)
  3. Make a request to an AWS service (I used STS)
  4. Notice that an empty string is sent for the User-Agent header (either by looking at the HttpClient's debug logs, or asking the proxy server to dump the traffic)

Context

Proxy servers may handle requests different depending on a number of factors, including the User Agent. Without an accurate User Agent header, proxy servers lose an important piece of information.

Your Environment

  • AWS Java SDK version used: 2.9.14
  • JDK version used: 1.8.x
  • Operating System and version: Windows

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugThis issue is a bug.hacktoberfestWe encourage contributions to this issue for Hacktoberfest.p3This is a minor priority issueproxyThis issue is related to a proxy configuration

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions