Ruby on Rails — очистить параметры URL

У меня есть приложение Rails, настроенное так, что когда пользователь загружает изображение, оно отправляется непосредственно на Amazon S3. Я должен указать адрес перенаправления в коде формы. После завершения загрузки изображения Amazon перенаправляет пользователя на www.redirect_address.com/?bucket=[BUCKET]&key=[KEY]&etag=[ETAG]

Мне нужна информация bucket и key для обработки изображения, но есть ли способ, чтобы пользователь не видел все эти параметры в поле адреса. Способ, с помощью которого я все еще могу получить всю эту информацию и все, что видит пользователь, это www.redirect_address.com

Спасибо!

Тим


person Tim    schedule 19.10.2010    source источник


Ответы (1)


Хорошим подходом здесь является использование потоковой передачи внешним веб-сервером через надстройки x send file (см.: nginx xsendfile или apache mod_xsendfile), а в rails у вас будет такое действие в виде:

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-адрес для них остается таким же, как обычный запрос к вашему приложению (/users/:id/avatar или что-то еще), потому что нет перенаправления.

person Jeremy    schedule 20.10.2010