我在使用WebWorkers和XHR尝试使用后台上传系统时遇到了一些问题。
在服务器端,我正在使用python tornado web服务器。 url的处理程序如下所示:
class FileHandler(RequestHandler):
def put(self,fileid):
self.set_header('Access-Control-Allow-Origin', '*')
...
在客户端我正在使用XHR(因为我试图从WebWorker开始工作)。它看起来像
uploadFile = (file,url) ->
xhr = new XMLHttpRequest()
xhr.open('PUT',url)
xhr.onload = (event) ->
...
xhr.send()
如果我在主线程中使用此功能,它可以工作,但是如果我在我的WebWorker中使用它,它会因原始不允许错误而失败,即使它似乎将'Access-Control-Allow-Origin'设置为' *'应该允许它工作。
答案 0 :(得分:2)
好的,我通过在龙卷风代码中进行一些服务器端更改来实现这一点
class FileHandler(RequestHandler):
def put(self,fileid):
self.set_header('Access-Control-Allow-Origin', '*')
...
def options(self,fileid):
self.set_header('Access-Control-Allow-Origin', '*')
self.set_header('Access-Control-Allow-Methods', 'GET, PUT, OPTIONS')
在与客户端的XHR请求进行协商期间,需要使用选项动词来传递适当的标头信息。我还需要在实际响应中重新发送标头,否则它仍然会失败。会对任何进一步解释情况的评论感兴趣,因为我对这个“修复”的理解是不稳定的。