2010-09-01 37 views
1

Je cherche une solution pour obtenir/envoyer les données de/vers un autre domaine en utilisant JSONP dans les Web Workers.Partage de ressources d'origine croisée (CORS) en utilisant JSONP et les travailleurs Web

Étant donné que les travailleurs Web n'ont pas accès au DOM, il n'est pas possible d'ajouter la balise <script> avec le paramètre url et callback à la balise <head> de Web Workers.

Est-ce que quelqu'un sait, comment obtenir/publier les données de/vers un autre domaine en utilisant JSONP et Web Workers?

Merci,

+0

mise à jour du statut s'il vous plaît? Si ma réponse résout le problème, j'apprécierais une coche «Meilleure réponse». Si non, dites-moi s'il vous plaît pourquoi je peux l'améliorer. – ssokolow

Répondre

4

CORS est une spécification qui n'a rien à voir avec JSONP au-delà de ce qui rend obsolète dans les navigateurs les plus récents. Il permet des requêtes interdomaines à l'aide d'appels XMLHttpRequest ordinaires.

Voici an overview comment ça marche et comment l'utiliser. Il peut être utilisé dans Firefox 3.5+, Safari 4+, Chrome 3+, Internet Explorer 8+ et anything else using one of the same engines.

2

Jetez un oeil à ce code:

// 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

Cela fonctionne, un postMessage pourrait être plus facile si ... – spolu

+0

C'est excellent! Je commençais vraiment à penser qu'un appel interdomaine d'un WebWorker était impossible. Merci! –