2010-09-01 118 views
1

我正在尋找解決方案如何使用Web Workers中的JSONP將數據從/發送到/發送到其他域。使用JSONP和Web Workers的跨源資源共享(CORS)

由於Web Workers無法訪問DOM,因此無法將<script>標記的URL和回調參數附加到Web Workers的<head>標記中。

有誰知道,如何使用JSONP和Web Workers將數據從/發送到另一個域?

感謝,

+0

狀態更新嗎?如果我的答案解決了問題,我將非常感謝「最佳答案」複選標記。如果沒有,請告訴我爲什麼我可以改進它。 – ssokolow 2010-09-27 15:27:38

回答

4

CORS是具有無關JSONP超越使其在新的瀏覽器已經過時的規範。它使用普通的XMLHttpRequest調用啓用跨域請求。

這是an overview它是如何工作的以及如何使用它。它可用於Firefox 3.5+,Safari 4+,Chrome 3+,Internet Explorer 8+和anything else using one of the same engines

2

看一看這段代碼:

// Helper function to make the server requests 
function MakeServerRequest() 
{ 
    importScripts("http://SomeServer.com?jsonp=HandleRequest"); 
} 

// Callback function for the JSONP result 
function HandleRequest(objJSON) 
{ 
    // Up to you what you do with the data received. In this case I pass 
    // it back to the UI layer so that an alert can be displayed to prove 
    // to me that the JSONP request worked. 
    postMessage("Data returned from the server...FirstName: " 
        + objJSON.FirstName + " LastName: " + objJSON.LastName); 
} 

// Trigger the server request for the JSONP data 
MakeServerRequest(); 
+0

這個工程,postMessage可能會更容易,但... – spolu 2013-10-07 13:11:21

+0

這是優秀的!我真的開始認爲來自WebWorker的跨域Ajax調用是不可能的。謝謝! – 2013-12-22 14:21:27