Ruby на рельсах - очистить параметры URL
-
09-10-2019 - |
Вопрос
У меня есть приложение Rails, чтобы, когда пользователь загружает изображение, он отправляется непосредственно на S3 Amazon. Я должен указать адрес перенаправления в коде форм. После завершения изображения Amazon перенаправляет пользователь www.redirect_address.com/?bucket=[BUCKET]&key=[KEY]&etag=[ETAG]
мне нужно bucket
и key
Информация для обработки изображения, но есть ли способ для пользователя не видеть все эти параметры в адресной коробке. Способ, которым я все еще могу получить всю эту информацию, и весь пользователь видит www.redirect_address.com
Спасибо!
Тим
Решение
Хороший подход здесь состоит в том, чтобы использовать потоковое интерфейс веб-сервера через X Отправить файл Addons (см.: nginx xsendfile. или apache mod_xsendfile.), а в рельсах у вас будет действие, такое как:
def avatar
if @user.avatar?
response.headers["X-Accel-Redirect"] = @user.s3_avatar_url
head :ok
else
head :error # or display a default image , whatever you want here
end
end
И это устанавливает заголовок HTTP X-Accel-Redirect
Что отправляется в Apache / Nginx с вашего сервера приложений, который, как только у вас установлен ссылка модуля на вышеупомянутой, прокажите веб-серверу, чтобы протокоть файл непосредственно к клиенту, но URL для них остается такой же, как обычный запрос к вашему приложению (/ пользователям /: идентификатор / аватар или что-то еще), потому что нет перенаправления.