{"action":"closed","issue":{"url":"https://api.github.com/repos/fog/fog/issues/3441","labels_url":"https://api.github.com/repos/fog/fog/issues/3441/labels{/name}","comments_url":"https://api.github.com/repos/fog/fog/issues/3441/comments","events_url":"https://api.github.com/repos/fog/fog/issues/3441/events","html_url":"https://github.com/fog/fog/issues/3441","id":57907101,"number":3441,"title":"Excon unable to load S3 URLs with AWS v4 signatures generated by Fog","user":{"login":"sentience","id":89772,"avatar_url":"https://avatars.githubusercontent.com/u/89772?v=3","gravatar_id":"","url":"https://api.github.com/users/sentience","html_url":"https://github.com/sentience","followers_url":"https://api.github.com/users/sentience/followers","following_url":"https://api.github.com/users/sentience/following{/other_user}","gists_url":"https://api.github.com/users/sentience/gists{/gist_id}","starred_url":"https://api.github.com/users/sentience/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sentience/subscriptions","organizations_url":"https://api.github.com/users/sentience/orgs","repos_url":"https://api.github.com/users/sentience/repos","events_url":"https://api.github.com/users/sentience/events{/privacy}","received_events_url":"https://api.github.com/users/sentience/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-02-17T10:28:41Z","updated_at":"2015-02-17T22:11:38Z","closed_at":"2015-02-17T22:11:38Z","body":"Fog began generating AWS v4 signatures with version 1.25.0. Specifically, following b90b6040bcc6ea08c0d8a5cd242634994b593fa9, Fog now returns a v4-signed URL when asked for a URL for a file stored on an S3 private bucket.\r\n\r\nAlthough these v4-signed URLs seem to work fine with most HTTP clients including major browsers, curl, and others, these URLs are rejected with a SignatureDoesNotMatch error from S3 when they are loaded using the Excon HTTP client gem:\r\n\r\n```\r\nExcon.get(\"https://sicmyp-test.s3-us-west-1.amazonaws.com/uploads/1424166167-10130-7518/import20150217-10130-9qlzug?X-Amz-Expires=604799&X-Amz-Date=20150217T094305Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAINQX23RAAU76OVRA/20150217/us-west-1/s3/aws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=cb4075605d96a43109cb97b8d2f24e1d6b8a810bce2a0aab0b6c6f2c02c36285\")\r\n```\r\n\r\n(Note: the signed URL in the above code is good for a week from now.)\r\n\r\nI’ve reported this as an issue in Excon (excon/excon#475), but I thought it worth raising here as well. Fog has Excon as a dependency, and therefore applications using Fog might naturally choose Excon as the HTTP client they use to consume these URLs. (Our app certainly does!)"}}