web-dev-qa-db-fra.com

'Access-Control-Autory-Origin' manquant lors de la téléchargement sur YouTube API

Depuis plusieurs années, nous avons correctement téléchargé des vidéos via l'API YouTube en utilisant un code JavaScript personnalisé. Le code était basé sur certains échantillons fournis par Google (Cors_Upload.js). Ce n'est pas quelque chose que nous utilisons beaucoup, juste toutes deux semaines.

Les choses travaillaient bien il y a quelques semaines, mais cela a attiré mon attention que les choses ont récemment cessé de fonctionner. Nous nous connectons bien, nous obtenons l'amende de l'info de la chaîne. Mais lorsque nous commençons le téléchargement (ce qui se passe via XHR Post), nous obtenons une erreur de Cors:

Demande d'origine croisée bloquée: la même stratégie d'origine désactive la lecture de la ressource distante à https://www.googleapis.com/upload/youtube/v3/videos?partt=nippet%2cstatus&uploadtype=Resumble . (Raison: l'en-tête CORS 'ACCESS-CONTRÔLE-CONTRÔLE-ORIGINE' MANAIS).

Mais nous n'avons rien changé dans notre code ni sur notre serveur et il apparaît comme si nous effectuions toutes les choses nécessaires comme documenté par Google pour que leur service réagisse avec les en-têtes CORS requis.

Selon la console Dev, la demande XHR génère en fait 2 demandes de réseau. Je vois d'abord une "option":

Request URL:https://www.googleapis.com/upload/youtube/v3/videos?part=snippet%2Cstatus&uploadType=resumable
Request Method:OPTIONS
Remote Address:172.217.9.42:443

Cela rend effectivement renvoyer l'en-tête "Access-Control-Control-Autory-Origin" que j'attends. Cependant, cela est immédiatement suivi de la demande "post":

Request URL:https://www.googleapis.com/upload/youtube/v3/videos?part=snippet%2Cstatus&uploadType=resumable
Request Method:POST
Remote Address:172.217.9.42:443

Et selon la console de dev la console, il ne dispose pas du jeu d'en-tête "ACCESS-CONTROL-INTERRUT-ORIGINE". Donc, je comprends pourquoi mon navigateur rejetant les choses. Il semble juste que Google a cassé quelque chose.

J'ai déployé avec succès un serveur NodeJs "Cors Anywhere" sur un serveur que nous gérons. Donc, je peux utiliser cela pour contourner la question. Mais ce n'est vraiment pas la solution correcte au problème. Depuis le téléchargement de vidéos par programme n'est pas quelque chose que nous faisons une tonne, ce travail autour sera probablement suffisant pour nous. J'aimerais comprendre ce qui s'est mal passé ou comment réparer. Donc, si quelqu'un télécharge avec succès des vidéos avec l'API YouTube et JavaScript, j'aimerais en entendre parler de ça. Espérons que cela aidera à éduquer les autres si/quand ils rencontrent dans la question.

5
Jeff Bruce

Le même problème vient de commencer à se produire avec mes services.

Il semble être un bug sur Googleapis ou peut-être que YouTube.v3.apis avait un changement de politique et a commencé à bloquer certains clients.

1
Victor Aurélio