Compartilhar via


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

A política de origem idêntica imposta pelo controlo do browser ou da webview impede que um script carregado a partir de um domínio obtém ou manipulou propriedades de uma página 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.

Uma vez que os Suplementos do Office estão alojados num controlo de webview, a política da mesma origem também se aplica ao script em execução nas respetivas páginas 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 a partilha de recursos de várias origens, veja os muitos recursos disponíveis na Web, como a Partilha de Recursos Transversais à Origem (CORS).

Observação

Para obter informações sobre como utilizar o CORS num suplemento do Outlook que implementa a ativação baseada em eventos ou relatórios de spam integrados, veja Utilizar o início de sessão único (SSO) ou a partilha de recursos de várias origens (CORS) no seu suplemento do Outlook baseado em eventos ou relatórios 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