martes, 6 de diciembre de 2011

Problema Acceso Denegado de javascript en sitios con frames

Resulta que tenía un sitio web en .Net desarrollado con controles Telerik el cual funcionaba estupendamente. El problema se presentó cuando la empresas decidió que mi pagina debería correr dentro de un iFrame en otra aplicación.

Después del obligado cambio en el diseño y distribución, me encontré con que muchos de los controles no funcionaban correctamente o de plano, ya no servían para nada. Para no hacer la historia más larga, encontramos que el problema era que mi aplicación se encontraba en un dominio y la aplicación maestra (la que encerró en un triste frame a mi aplicación) en otro.

Entre los errores que encontré estaba el siguiente:
Mensaje: Acceso denegado.
Línea: 5959
Carácter: 49
Código: 0
URI: http://192.200.4.248/NOMBRE_APLICACION/ScriptResource.axd?d=2TUSrXlGiZ-YhriQIxHvs2j2r3CD-1dxiNch9HtINJ1-xYqYmXVZ2MxqzBF9v_CRUg-thDlUW3uXGz_vysgmtwWzobIsUaqbRwJQzvcSjKo1&t=633093755470531249 

Ese o en lugar de ScriptResource.axd TelerikScript.axd o algo así. El punto es que la solución está en usar unos archivos de scripts modificados directamente en nuestros ScriptManagers. Esto se hace de la siguiente manera (en cada página que tenga un ScriptManager o RadScriptManager):

    <telerik:RadScriptManager ID="RadScriptManager1" runat="server" >
        <Scripts>
            <asp:ScriptReference Name="MicrosoftAjax.js" ScriptMode="Auto" Path="~/Includes/MicrosoftAjax.js"/>
        </Scripts>
    </telerik:RadScriptManager>

Adjunto aquí el par de archivos requeridos (MicrosoftAjax.js y MicrosoftAjax.debug.js).

Referencias:

http://madskristensen.net/post/Iframe-cross-domain-JavaScript-calls.aspx
http://weblogs.asp.net/bleroy/archive/2007/01/31/how-to-work-around-the-quot-access-denied-quot-cross-domain-frame-issue-in-asp-net-ajax-1-0.aspx
http://www.koders.com/javascript/fid512F223189A2C0D3E027DA32C0742FA88FEA3FD8.aspx

No hay comentarios:

Publicar un comentario en la entrada