J'essaie d'obtenir des fichiers via AJAX à partir du stockage google cloud sur mon hôte local. Je l'ai fait ce qui suit:Google Cloud Storage ignorant les en-têtes d'origine du contrôle d'accès
Réglez le CORS pour mon seau via gsutil:
gsutil cors set cors.json gs://my-project
où le fichier est cors.json:
[
{
"origin": [
"*"
],
"responseHeader": ["Origin", "Accept", "X-Requested-With", "Authorization", "Content-Type", "Content-Length", "Accept-Encoding", "X-CSRF-Token"],
"method": [
"GET",
"OPTIONS"
],
"maxAgeSeconds": 1
}
]
Je l'ai vérifié avec gsutil cors get gs://my-project
Ensuite, pour chaque fichier que j'ai rendu public, à la fois via la bibliothèque client node.js lorsque le fichier est téléchargé:
bucket.file(object.name).makePublic()
via la console, et à travers le gsutil:
gsutil -m acl set -R -a public-read gs://my-project
Puis dans ma demande ajax, je vous envoie aussi des en-têtes:
$.ajax({
method: "GET",
url: "https://googleapis.com/storage/v1/b/my-project/o?delimiter=audio",
headers: {
'Access-Control-Allow-Origin': '*'
},
crossDomain: true,
}).done((data) => {
console.log(data)
})
et je reçois encore erreur de cors:
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' http://localhost:3000 ' is therefore not allowed access.
Comment puis-je passer CORS?
Réponse très utile - merci! – mheavers
Voici mon format de terminal: "storage.googleapis.com/[BUCKET_NAME]/[OBJECT_NAME]", est-ce que cela signifie que vous devez le remplacer par "www.storage.googleapis.com/[BUCKET_NAME]/[OBJECT_NAME]"? – KevinHu
storage.googleapis.com/BUCKET/OBJECT va bien. –