2015-10-15 17 views
9

Sto provando a riprodurre un audio utilizzando Google Text-To-Speech. Pertanto ho bisogno di inviare una richiesta al loro endpoint con il Referer e l'User-Agent impostato correttamente. Questa chiamata dovrebbe restituire un MP3 che posso riprodurre.Richiesta Ajax: rifiutato di impostare un'intestazione non sicura

Tuttavia, viene visualizzato l'errore "Rifiutato di impostare un'intestazione non sicura". Questo è il mio codice Come posso farlo?

  $.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

Possibile duplicato di [Aggiungi intestazione in richiesta AJAX con jQuery] (http://stackoverflow.com/questions/10093053/add-header-in-ajax-request-with-jquery) – Craicerjack

+1

Non importa quale intestazione si set, il Google translate endpoint non supporta CORS – adeneo

+0

riccioli funziona ... – Arturo

risposta

14

Non è possibile. È impossibile.

Il specification richiede che il browser interrompa il metodo setRequestHeader se si tenta di impostare quelle intestazioni.

Se è necessario impostare le intestazioni, allora avrete bisogno di effettuare la richiesta dal server e non il browser del visitatore.

(Ciò detto, se è necessario essere ingannevoli riguardo l'agente utente o il referente, probabilmente si sta tentando di utilizzare il servizio in modo che il proprietario non lo desideri, quindi è necessario rispettarlo e smettere di provare) .

di controllare anche la "Fetch forbidden header names".