Nous créons un formulaire permettant aux utilisateurs de télécharger des fichiers volumineux. Sur les appareils mobiles et les connexions lentes, le téléchargement peut prendre un certain temps, il semble donc important de le traiter par un appel AJAX qui montre aux utilisateurs une barre de progression (ou quelque chose pour leur faire savoir qu'il fonctionne toujours).Téléchargement de fichier AJAX avec variables de requête secrètes
Voici le problème: Le point final pour le téléchargement est une API tierce qui attend notre clé API secrète comme l'un des paramètres. Voici un lien directement vers the section in their documentation. Cette clé API ne peut pas être exposée aux utilisateurs du côté client. Mon premier instinct est de soumettre le formulaire à un script PHP intermédiaire sur notre site, qui a la clé API, puis télécharge le fichier dans l'API. Mais je suis presque sûr que cela signifiera le téléchargement du fichier deux fois: une fois sur notre serveur. Puis à nouveau de notre serveur vers le point de terminaison API. Même si le formulaire est envoyé avec AJAX, ce n'est pas un bon résultat pour l'utilisateur d'attendre deux fois plus longtemps.
Donc: Quelle est la meilleure façon de permettre aux utilisateurs de télécharger des fichiers tout en gardant notre clé API en toute sécurité?
Quelques détails qui peuvent être importants ou non:
Notre site est une application web PHP basée sur le framework CakePHP (v2.x). Les fichiers téléchargés sont des fichiers vidéo de tous les différents formats entre 1 et 5 minutes. L'API est une société appelée Wistia (voir le lien vers les documents ci-dessus). Les tailles de fichier semblent aller de 3-30MB. Nous n'avons aucune possibilité de changer la façon dont fonctionne l'API tierce.
Comment devez-vous transmettre le paramètre à l'API? Par PHP? Par Javascript en tant que param dans une URL? Je n'ai pas très clair pourquoi devrait-il être public et pas caché dans le côté PHP. – Alvaro
La requête Ajax sera envoyée directement à la 3ème partie? – Pieter
@Alvaro J'ai ajouté le lien aux options d'autorisation dans leurs documents. – emersonthis