2015-10-15 1 views
9

J'essaie de lire un fichier audio à l'aide de Google Text-To-Speech. Par conséquent, j'ai besoin de poster une demande à leur point de terminaison avec le Referer et l'utilisateur-agent correctement défini. Cet appel devrait renvoyer un MP3 que je peux jouer.Ajax request: Refusé de définir un en-tête non sécurisé

Cependant, j'obtiens des erreurs "Refusé pour définir l'en-tête non sécurisé". C'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(); 
      } 
      }); 
+0

Copie possible de [Ajouter un en-tête dans AJAX Request avec jQuery] (http://stackoverflow.com/questions/10093053/add-header-in-ajax-request-with-jquery) – Craicerjack

+1

N'importe pas quel en-tête vous set, le terminal Google translate ne prend pas en charge CORS – adeneo

+0

De cURL cela fonctionne ... – Arturo

Répondre

14

Vous ne pouvez pas. C'est impossible. Le specification exige que le navigateur abandonne la méthode setRequestHeader si vous essayez de définir ces en-têtes.

Si vous avez besoin de définir ces en-têtes, vous devrez en faire la demande auprès de votre serveur et non du navigateur de votre visiteur. (Cela dit, si vous avez besoin d'être trompeur à propos de l'agent utilisateur ou du référent, alors vous essayez probablement d'utiliser le service d'une manière que le propriétaire ne veut pas, alors vous devriez respecter cela et cesser d'essayer) .

Vérifiez également le "Fetch forbidden header names".