Friday, August 20, 2010

Cross-Domain & jsonp (java struts, php, asp.net mvc, otros )

Cross-Domain Proxy
En el caso de Ajax, por seguridad sólo se permite acceder al mismo dominio origen de la página web que realiza la petición. Si se necesita acceder a otros servicios localizados en otros dominios, se instala un Cross-Domain proxy en el dominio origen que recibe las peticiones ajax y las reenvia a los dominios externos.

Con jsonp es posible la llamada cross-domain, debido a que no es una llamada ajax sino una carga de un script js completo que lanza una función que definimos en la url y que actúa como callback.

Mientras que por motivos de seguridad es lógico que Ajax no funcione en dominios distintos al que lanza la web; con esta técnica JSON con Padding se genera un archivo JSON dinámicamente dejandolo abierto en el script que lo crea. Una variable que podemos definir nosotros mismos en la url será colocada antes del objeto Json, así al crear el script Json decidimos que variable "callback" usar.


Referencias

[1] jQuery y Strust
http://blog.pontt.com/json-con-java/generar-respuesta-en-java-struts-para-getjson-de-jquery/
[2] jQuery y php http://www.9lessons.info/2009/12/display-cross-domain-data-json-callback.html
[3] jQuery y Asp.Net Mvc (cross-domain JSON to ASP.NET MVC with jQuery)
http://www.integratedwebsystems.com/2010/07/cross-domain-jsonp-using-asp-net-mvc-and-jquery/
[4] cross-domain JSON to ASP.NET MVC with jQuery II
http://stackoverflow.com/questions/2022878/posting-cross-domain-json-to-asp-net-with-jquery
[5] Genericos(muy buenos)
http://www.ibm.com/developerworks/library/wa-aj-jsonp1/
http://ox.no/posts/ajast-cross-domain-rest-calls-using-json-injection
[6] Json to JsonP (easy)
http://www.codeproject.com/KB/aspnet/JSONToJSONP.aspx
http://www.codedigest.com/Articles/jQuery/310_Calling_a_WebService_using_jQuery_in_ASPNet.aspx
[7] Cross-site data retrieval using JSONP http://www.stpe.se/2008/10/cross-site-data-retrieval-using-jsonp/

No comments:

Firefox open multiple private window

    /opt/firefox/firefox-bin --profile $(mktemp -d) --private-window www.google.com www.bing.com