Link 到静态 Tornado 页面中的外部 url
Link to external url in static Tornado page
我制作了一个 html 文件和一个 python 脚本来通过 websocket 和 Tornado Web 服务器控制我的 raspberry pi GPIO 引脚。它很好用。为了提供我的静态 html 页面,我在 python 脚本中使用了以下代码:
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 将它作为来自 raspberry pi 的静态页面服务器时,则此方法无效。在 javascript 控制台中,我收到消息:"Failed to load resource: the server responded with a status of 404 (Not Found)".
我不明白为什么这是个问题,因为它绝对 link 到外部网站。有人知道解决办法吗?
谢谢!
看起来问题是 Google 阻止了基于 Referer header 的 API 的使用。当文件在本地磁盘上时,没有 Referer 被发送并且它工作,但是当文件通过 HTTP 访问时,Referer 被发送并且 Google returns 一个 404。有关更多详细信息,请参见 Request to Google Text-To-Speech API包括可能的解决方法。
我制作了一个 html 文件和一个 python 脚本来通过 websocket 和 Tornado Web 服务器控制我的 raspberry pi GPIO 引脚。它很好用。为了提供我的静态 html 页面,我在 python 脚本中使用了以下代码:
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 将它作为来自 raspberry pi 的静态页面服务器时,则此方法无效。在 javascript 控制台中,我收到消息:"Failed to load resource: the server responded with a status of 404 (Not Found)".
我不明白为什么这是个问题,因为它绝对 link 到外部网站。有人知道解决办法吗?
谢谢!
看起来问题是 Google 阻止了基于 Referer header 的 API 的使用。当文件在本地磁盘上时,没有 Referer 被发送并且它工作,但是当文件通过 HTTP 访问时,Referer 被发送并且 Google returns 一个 404。有关更多详细信息,请参见 Request to Google Text-To-Speech API包括可能的解决方法。