2012-01-05 14 views
0

WebWorkersとXHRを使用してバックグラウンドアップロードシステムを使用しようとするといくつか問題が発生します。webworkerとxmlhttprequestを使用すると起点エラーが発生する

サーバー側では、私はpython tornado Webサーバーを使用しています。 (私はこのWebWorkerから作業を取得しようとしているので)私はXHRを使用しているクライアント側の

class FileHandler(RequestHandler): 

    def put(self,fileid): 
     self.set_header('Access-Control-Allow-Origin', '*') 
     ... 

:URLのハンドラは次のようになります。私はそれが動作メインスレッドからこの関数を使用する場合、それは

uploadFile = (file,url) -> 
    xhr = new XMLHttpRequest() 
    xhr.open('PUT',url) 
    xhr.onload = (event) -> 
     ... 
    xhr.send() 

のように見えますが、私は私のWebWorkerからそれを使用する場合、それは「アクセス制御の設定のように見えても、原点を許可されていないエラーで失敗します-Allow-Origin 'を' * 'に設定すると、それが動作するはずです。

答えて

2

OK、私はこれが私の竜巻コードオプションの動詞は、クライアントのXHRリクエストでnegotion時に適切なヘッダ情報を渡すために必要とされている

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') 

にいくつかのサーバー側の変更を加えることによって動作するようになりました。実際の応答でヘッダーを再送信する必要もありました。それ以外の場合はまだ失敗しました。この「修正」の理解が不安定であるため、状況をさらに説明するコメントに興味がありますか。

+2

注 - 認証にCookieを使用している場合は、次の操作を行う必要があります。 #1。 $ ajax xhRパラメータを使用して、withCredentialsをtrueに設定します(http://api.jquery.com/jQuery.ajax/を参照)。 #2。サーバー側では、self.set_header( 'Access-Control-Allow-Credentials'、 'true')も追加します。また、少なくともjQuery 1.5.1を使用していることを確認してください。 – cailinanne

関連する問題