Ruby on Rails - Clean up parametri URL
-
09-10-2019 - |
Domanda
Ho un'applicazione Rails impostato in modo che quando un utente carica un'immagine, viene inviato direttamente a S3 di Amazon. Devo specificare un indirizzo di reindirizzamento nel codice del modulo. Dopo il caricamento immagine finita, Amazon reindirizza l'utente a www.redirect_address.com/?bucket=[BUCKET]&key=[KEY]&etag=[ETAG]
Ho bisogno di informazioni bucket
e key
per elaborare l'immagine, ma c'è un modo per l'utente di non vedere tutti i parametri della barra degli indirizzi. Un modo in cui posso ancora ottenere tutto ciò che informazioni e tutto l'utente vede è www.redirect_address.com
Grazie!
Tim
Soluzione
Un approccio buono qui è quello di utilizzare lo streaming da un server Web front-end attraverso addons file x di invio (vedi: nginx xsendfile o apache mod_xsendfile ), in rotaie avrai un'azione come:
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
E questo set di un http intestazione X-Accel-Redirect
che viene inviato a apache / nginx dal server app, che una volta che hai linkd del modulo sopra installato, whill dicono al web server per lo streaming di file direttamente al cliente, ma il url per loro rimane la stessa come una richiesta normale per la vostra applicazione. (/ utenti /: id / avatar o qualsiasi altra cosa) perché non c'è alcun redirect