2015-04-12 90 views
0

我製作了一個html文件和一個python腳本,通過websocket與Tornado Web服務器控制我的樹莓派GPIO引腳。它效果很好。爲了滿足我的靜態HTML頁面我使用的python腳本如下代碼:鏈接到靜態Tornado頁面中的外部網址

application = tornado.web.Application([ 
    (r'/escape/media/(.*)',tornado.web.StaticFileHandler,{"path":'/home/pi/myproject/media'}), 
    (r'/escape/(.*)',tornado.web.StaticFileHandler,{"path":'/home/pi/myproject'}), 
    (r'/mycode',WSHandler) 
]) 
if __name__ == "__main__": 
    http_server = tornado.httpserver.HTTPServer(application) 
    http_server.listen(8888) 
    print 'Websocket Server Start ...' 
    tornado.ioloop.IOLoop.instance().start() 

在HTML文件中我嘗試加載外部MP3文件播放:

function talk() { 
      text = encodeURI(document.getElementById("textinput").value); 
      mp3 = new Audio('http://translate.google.com/translate_tts?tl=en&q=' + text); 
      mp3.play(); 
     } 

這個作品,如果我加載在我的Windows機器上從我自己的磁盤上的網頁,但不是當Tornado將它作爲樹莓派的靜態頁面時。在javascript控制檯中,我收到以下消息:「無法加載資源:服務器的狀態爲404(未找到)」。

我不明白爲什麼這是一個問題,因爲它是一個外部網站的絕對鏈接。有誰知道解決方案?

謝謝!

回答

0

看起來問題在於Google根據Referer頭阻止使用此API。當文件位於本地磁盤上時,不會發送Referer並且它可以正常工作,但是當通過HTTP訪問文件時,Referer將被髮送,Google將返回404。有關可能的解決方法的更多詳細信息,請參閱Request to Google Text-To-Speech API

+0

感謝您的回答。我將研究解決方法,看看我能否以這種方式解決問題。 – Oehoe