Compartir a través de


Abordar las limitaciones de la directiva del mismo origen en complementos para Office

La directiva del mismo origen aplicada por el explorador o el control de vista web impide que un script cargado desde un dominio obtenga o manipule las propiedades de una página web de otro dominio. Esto significa que, de manera predeterminada, el dominio de una dirección URL solicitada debe ser el mismo que el dominio de la página web actual. Por ejemplo, esta directiva impedirá que una página web en un dominio realice llamadas a servicios web XmlHttpRequest a otro dominio que no sea el dominio donde se hospeda.

Dado que los complementos de Office se hospedan en un control de vista web, la directiva del mismo origen también se aplica a los scripts que se ejecutan en sus páginas web.

La directiva de mismo origen puede ser un impedimento innecesario en muchas situaciones, como cuando una aplicación web hospeda contenido y API en varios subdominios. Hay algunas técnicas comunes para superar la aplicación de directivas de mismo origen de forma segura. Este artículo solo puede proporcionar una breve Introducción a algunas de ellas. Use los vínculos indicados para comenzar con la investigación de estas técnicas.

Usar JSONP para acceso anónimo

Una forma de superar las limitaciones de las políticas de origen común es utilizarJSONP para proporcionar un proxy para el servicio web. Para ello, incluya una etiqueta de script con un atributo src que apunte a algún script hospedado en cualquier dominio. Puede crear mediante programación las etiquetas de script, crear dinámicamente la dirección URL para apuntar al atributo src y, después, pasar parámetros a la dirección URL a través de parámetros de consulta URI. Los proveedores de servicios web crean y hospedan código JavaScript en direcciones URL específicas y devuelven scripts diferentes dependiendo de los parámetros de consulta URI. Después, estos scripts se ejecutan donde se insertan y funcionan del modo previsto.

El siguiente es un ejemplo de JSONP que utiliza una técnica que funcionará en cualquier complemento de Office.

// Dynamically create an HTML SCRIPT element that obtains the details for the specified video.
function loadVideoDetails(videoIndex) {
    // Dynamically create a new HTML SCRIPT element in the webpage.
    const script = document.createElement("script");
    // Specify the URL to retrieve the indicated video from a feed of a current list of videos,
    // as the value of the src attribute of the SCRIPT element. 
    script.setAttribute("src", "https://gdata.youtube.com/feeds/api/videos/" + 
        videos[videoIndex].Id + "?alt=json-in-script&callback=videoDetailsLoaded");
    // Insert the SCRIPT element at the end of the HEAD section.
    document.getElementsByTagName('head')[0].appendChild(script);
}

Implementar un código del lado del servidor con un esquema de autorización basado en tokens

Otra forma de abordar las limitaciones de directivas de mismo origen es proporcionar un código de servidor que use flujos OAuth 2.0 para permitir a un dominio obtener acceso autorizado a los recursos hospedados en otro.

Uso compartido de recursos entre orígenes (CORS)

Para más información sobre el uso compartido de recursos entre orígenes, consulte los muchos recursos disponibles en la web, como el uso compartido de recursos entre orígenes (CORS).

Nota:

Para obtener información sobre cómo usar CORS en un complemento de Outlook que implementa la activación basada en eventos o informes de correo no deseado integrados (versión preliminar), consulte Uso del inicio de sesión único (SSO) o el uso compartido de recursos entre orígenes (CORS) en el complemento de Outlook de informes de correo no deseado o basado en eventos.

Crear su propio proxy con IFRAME y POST MESSAGE (mensajería en varias personas)

Para ver un ejemplo de cómo crear su propio proxy con IFRAME y POST MESSAGE, vea el tema sobre mensajería en varias ventanas.

Ver también