2015-10-15 35 views
9

我正在嘗試使用Google Text-To-Speech播放音頻。因此,我需要通過正確設置Referer和User-Agent向其端點發布請求。這個電話應該會返回一個我可以播放的MP3。阿賈克斯請求:拒絕設置不安全標題

但是,我得到「拒絕設置不安全標題」錯誤。這是我的代碼。我該怎麼做?

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

[在jQuery中添加AJAX請求中的標題]可能重複(http://stackoverflow.com/questions/10093053/add-header-in-ajax-request-with-jquery) – Craicerjack

+1

無論你的標題是什麼谷歌翻譯終端不支持CORS – adeneo

+0

從cURL它的作品... – Arturo

回答

14

你不能。是不可能的。

如果您嘗試設置這些標頭,則specification要求瀏覽器中止setRequestHeader方法。

如果您需要設置這些標頭,那麼您需要從服務器發出請求,而不是訪問者的瀏覽器。 (也就是說,如果你需要欺騙用戶代理或引用者,那麼你可能試圖以一種它所不想擁有的方式來使用服務,所以你應該尊重它並停止嘗試) 。

另請檢查「Fetch forbidden header names」。