Como lidar com limitações de política de mesma origem nos Suplementos do Office

A política de mesma origem imposta pelo navegador ou pelo controle webview impede que um script carregado de um domínio obter ou manipular propriedades de uma página da Web de outro domínio. Isso significa que, por padrão, o domínio de uma URL solicitada deve ser igual ao domínio da página da Web atual. Por exemplo, esta política impedirá que uma página da Web de um domínio faça chamadas de serviços Web XmlHttpRequest para um domínio diferente do qual ela está hospedada.

Como os Suplementos do Office estão hospedados em um controle webview, a política de mesma origem também se aplica ao script em execução em suas páginas da Web.

A política de mesma origem pode ser um deficiente em várias situações, como quando um aplicativo web hospeda conteúdo e as APIs em vários subdomínios desnecessários. Há algumas técnicas comuns para superar com segurança a imposição da política de mesma origem. Este artigo pode fornecer somente uma breve introdução de alguns deles. Use os links fornecidos para começar a usar a pesquisa destas técnicas.

Use JSONP para acesso anônimo

Uma maneira de superar essa limitação da política de mesma origem é usar o JSONP para fornecer um proxy para o serviço da Web. Faça isso incluindo uma marca script com um atributo src que aponta para alguns scripts hospedados em qualquer domínio. Você pode criar as marcas script, criar dinamicamente a URL para apontar para o atributo src e passar parâmetros para a URL por meio de parâmetros de consulta de URI. Os provedores de serviços Web criam e hospedam o código JavaScript em URLs específicas e retornam scripts diferentes, dependendo dos parâmetros de consulta de URI. Em seguida, esses scripts serão executados onde estiverem inseridos e funcionarão como esperado.

Veja a seguir um exemplo de JSONP que usa uma técnica que funcionará em qualquer Suplemento do 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);
}

Implemente o código servidor usando um esquema de autorização do token

Outra maneira de resolver limitações de política de mesma origem é fornecer o código no servidor que usa fluxos OAuth 2.0 para habilitar um domínio a obter acesso autorizado a recursos hospedado em outro domínio.

Use o CORS (compartilhamento de recursos entre origens)

Para saber mais sobre o compartilhamento de recursos entre origens, confira os muitos recursos disponíveis na Web, como CORS (Compartilhamento de Recursos entre Origens).

Observação

Para obter informações sobre como usar o CORS em um suplemento do Outlook que implementa a ativação baseada em eventos ou relatórios de spam integrados (versão prévia), consulte Usar o SSO (logon único) ou o CORS (compartilhamento de recursos entre origens) no suplemento do Outlook baseado em eventos ou de spam.

Criar seu próprio proxy usando IFRAME e PUBLICAR MENSAGENS (Mensagens entre Janelas)

Confira um exemplo de como criar seu próprio proxy usando IFRAME e PUBLICAR MENSAGEM em Mensagens entre janelas.

Confira também