Commit graph

4 commits

Author SHA1 Message Date
Stan Hu
97cabfb65c Send required object storage PUT headers in /uploads/authorize API
As revealed in https://gitlab.com/gitlab-org/gitlab-ce/issues/49957, Rails
generates a signed URL with a fixed HTTP header with `Content-Type:
application/octet-stream`. However, if we change or remove that for
some reason in Workhorse, this breaks the upload with a 403 Unauthorized because
the signed URL is not valid.

We can make this more robust by doing the following:

1. In the `/uploads/authorize` request, Rails can return a `StoreHeaders` key-value
pair in the JSON response containing the required headers that the PUT
request must include.
2. Use those HTTP headers if that value is present.
3. For backwards compatibility, if that key is not present, default to
the old behavior of sending the fixed `Content-Type` header.

See https://gitlab.com/gitlab-org/gitlab-workhorse/merge_requests/297 as well.
2018-08-23 12:40:24 -07:00
Kamil Trzciński
53d1c87c86 Fix Fog mocking 2018-06-05 16:48:42 +02:00
Kamil Trzciński
eea26a93e7 Update validator 2018-06-04 22:31:01 +02:00
Kamil Trzciński
b8370c9f55 Support presigned multipart uploads 2018-06-04 13:04:29 +02:00