2015-04-12 63 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