J'ai cette fonction exécutée dans une fonction Azure pour obtenir un jeton SAS pour une application de navigateur à télécharger sur Azure Blob Stockage:
const search = new URLSearchParams(`?${token}`); const sig = encodeURIComponent(search.get('sig')); const qs = `?sv=${search.get('sv')}&ss=b&srt=sco&sp=rwdlac&se=${search.get('sv')}&st=${search.get( 'st' )}&spr=https&sig=${sig}`; return `${url}/${containerName}/${filename}${qs}`;
3 Réponses :
Votre code de fonction Azure est correct et
return `${url}/${containerName}/${filename}?${token}`;
Dois-je définir des autorisations supplémentaires pour le service SAS? Je ne sais pas quoi faire d'autre à faire et tout ce que je reçois sont des erreurs 403. Quel est ce var connstring = processus.env.azurewebjobstorage; code>
@ Dagda1 Non, puisque vous voulez seulement télécharger BLOB, w code> (permission d'écriture) est suffisant en fait.
var connstring = processus.env.azurewebjobstorage code> est d'obtenir la chaîne de connexion de stockage définie dans les paramètres d'application de la fonction.
Le problème est que dans votre code côté serveur, vous créez un Étant donné que les paramètres utilisés pour créer Jetken ont maintenant changé (dans l'original, vous n'aviez pas de paramètres tels que Étant donné que vous retournez l'URL SAS de la blob, vous n'avez pas besoin de créer l'URL sur le client. Vous pouvez simplement utiliser le Service SAS CODE>, puis en prenant uniquement une partie de signature du code (
SIG code>) et crée un < Code> Compte SAS code> sur le client. p>
SS code>,
srt code> etc. mais quand vous êtes Création de votre propre URL, vous insérez ces paramètres) lorsque vous utilisez l'URL SAS modifiée, vous obtiendrez une erreur 403. Cela se passe car le serveur calcule à nouveau la signature basée sur les paramètres de l'URL et la comparaison avec la signature transmise dans l'URL. Étant donné que les deux signatures ne correspondent pas, vous obtenez l'erreur 403. P>
uri code> que vous retournez de votre couche d'API sur le client et utilisez-le pour télécharger. P>
Cela a-t-il quelque chose à voir avec le niveau d'accès public sur le conteneur? Je l'ai actuellement défini sur privé (pas d'accès anonyme)
Non. Cela n'a rien à voir avec ça.
La réponse de Jerry Liu expliqua votre fonction Azure génère le bon jeton et vous donne déjà l'URI correcte à utiliser qui inclut votre nom de blob et votre jeton.
de votre côté client, vous pouvez également utiliser Azure-sdk-for-JS P>
Pourriez-vous marquer une réponse utile pour que les autres se réfèrent si votre problème a été résolu?