webworker和xmlhttprequest使用导致原始错误

时间:2012-01-05 22:44:17

标签: html5

我在使用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'设置为' *'应该允许它工作。

1 个答案:

答案 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请求进行协商期间,需要使用选项动词来传递适当的标头信息。我还需要在实际响应中重新发送标头,否则它仍然会失败。会对任何进一步解释情况的评论感兴趣,因为我对这个“修复”的理解是不稳定的。