【问题标题】:Cross-Origin Resource Sharing (CORS) using JSONP and Web Workers使用 JSONP 和 Web Workers 的跨域资源共享 (CORS)
【发布时间】:2011-04-06 16:44:12
【问题描述】:

我正在寻找如何在 Web Worker 中使用 JSONP 从/向另一个域获取/发送数据的解决方案。

由于 Web Worker 无法访问 DOM,因此无法将带有 url 和回调参数的 <script> 标记附加到来自 Web Worker 的 <head> 标记。

有人知道如何使用 JSONP 和 Web Workers 从/向另一个域获取/发布数据吗?

谢谢,

【问题讨论】:

  • 请更新状态?如果我的回答解决了问题,我将不胜感激“最佳答案”复选标记。如果不是,请告诉我原因,以便我改进。

标签: cross-domain jsonp web-worker


【解决方案1】:

看看这段代码:

// 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();

【讨论】:

  • 太棒了!我真的开始认为来自 WebWorker 的跨域 ajax 调用是不可能的。谢谢!
【解决方案2】:

CORS 是一种规范,它与 JSONP 无关,只是在较新的浏览器中使其过时。它可以使用普通的 XMLHttpRequest 调用实现跨域请求。

这里是an overview 它的工作原理和使用方法。可用于 Firefox 3.5+、Safari 4+、Chrome 3+、Internet Explorer 8+ 和anything else using one of the same engines。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-12
    • 2014-03-20
    • 2018-05-04
    • 2011-06-10
    • 1970-01-01
    • 2013-01-18
    • 2014-01-18
    • 2014-10-08
    相关资源
    最近更新 更多