ciao,
Ginus82 ha scritto:
non funziona più niente.
Già, sei vincolato dalla
same-origin policy che ti impedisce, lato client, di consumare risorse ospitate in altri domini.
In questi casi ci sono un paio di soluzioni:
- JSONP. Normalmente, quando jQuery invia una richiesta ajax, sfrutta l'oggetto XmlHttpRequest che è limitato dai vincoli che hai riscontrato. jQuery, tuttavia, può andare a leggere il tuo servizio ASMX anche in un altro modo, usando una tecnica che non è vincolata dalla same-origin policy. Questa tecnica prevede l'uso di tag <script> iniettati dinamicamente nel DOM ma, affinché tutto ciò funzioni, devi adeguare il tuo servizio affinché in quella situazione restituisca JSONP anziché JSON. Si tratta semplicemente di "avvolgere" una chiamata a funzione attorno all'oggetto JSON che il tuo servizio restituirebbe normalmente. Es. callback({'Nome':'Mario'}) anziché il solito {'Nome':'Mario'}
In un servizio ASMX questo lo puoi fare scrivendoti un HttpModule, come vedi fare qui:
http://bloggingabout.net/blogs/adelkhalil/archive/2009/08/14/cross-domain-jsonp-with-jquery-call-step-by-step-guide.aspx
Poi dovrai effettuare una richiesta di tipo JSONP con jQuery. Per questo segui la documentazione:
http://api.jquery.com/jQuery.getJSON/#jsonp - CORS, acronimo di "Cross origin resource sharing". E' un sistema per aggiungere delle eccezioni alla same-origin policy, in modo che l'uso del servizio ASMX sia autorizzato anche da altri domini scelti da te (o da tutti). Il tuo codice javascript e il servizio ASMX resteranno immutati, quello che devi fare è inserire determinate intestazioni nella risposta web del servizio. Qui trovi una guida:
http://encosia.com/using-cors-to-access-asp-net-services-across-domains/
Attenzione, perché CORS è una specifica del W3C che ha raggiunto lo status di Candidate Recommendation solo lo scorso gennaio e perciò non riuscirai a farlo funzionare su tutti i browser, specialmente con Internet Explorer fino alla versione 9, compresa.
O meglio, IE8 e IE9 hanno un supporto parziale ma con delle grosse, grosse limitazioni come puoi leggere qui:
http://stackoverflow.com/questions/11487216/cors-with-jquery-and-xdomainrequest-in-ie8-9
ciao
Modificato da BrightSoul il 08 aprile 2013 22.19 -