web-dev-qa-db-fra.com

Demande Ajax: refus de définir un en-tête non sécurisé

J'essaie de lire un fichier audio à l'aide de Google Text-To-Speech. Par conséquent, je dois envoyer une demande à leur point de terminaison avec le référent et l'agent utilisateur correctement définis. Cet appel devrait renvoyer un MP3 que je peux lire.

Cependant, j'obtiens des erreurs "Refusé de définir un en-tête non sécurisé". Ceci est mon code. Comment puis-je le faire?

          $.ajax({
            url: 'http://translate.google.com/translate_tts?ie=UTF-8&q=Hello&tl=en&client=t',
            beforeSend: function(xhr) {
                 xhr.setRequestHeader("Referer", "http://translate.google.com/");
                 xhr.setRequestHeader("User-Agent", "stagefright/1.2 (Linux;Android 5.0)");
            }, success: function(data){
                el.mp3 = new Audio(data);
                el.mp3.play();
            }
          });
15
Arturo

Tu ne peux pas. C'est impossible.

La spécification nécessite que le navigateur abandonne la méthode setRequestHeader si vous essayez de définir ces en-têtes.

Si vous devez définir ces en-têtes, vous devrez effectuer la demande à partir de votre serveur et non du navigateur de votre visiteur.

(Cela dit, si vous devez vous méprendre sur l'agent utilisateur ou le référent, vous essayez probablement d'utiliser le service d'une manière que son propriétaire ne souhaite pas, vous devez donc respecter cela et arrêter d'essayer).

Vérifiez également le " Récupérer les noms d'en-tête interdits ".

25
Quentin