Behandeln von Richtlinieneinschränkungen aufgrund desselben Ursprungs in Office-Add-ins

Die vom Browser oder Webview-Steuerelement erzwungene Richtlinie für denselben Ursprung verhindert, dass ein Skript, das aus einer Domäne geladen wird, Eigenschaften einer Webseite aus einer anderen Domäne abrufen oder bearbeiten kann. Das heißt, dass die Domäne einer angeforderten URL standardmäßig identisch mit der Domäne der aktuellen Webseite sein muss. Beispielsweise verhindert diese Richtlinie, dass eine Webseite in einer anderen Domäne als der, in der sie gehostet wird, XmlHttpRequest-Webdienstauffrufe ausführt.

Da Office-Add-Ins in einem Webview-Steuerelement gehostet werden, gilt die Richtlinie desselben Ursprungs auch für Skripts, die auf ihren Webseiten ausgeführt werden.

Die „Richtlinie des gleichen Ursprungs“ kann in vielen Situationen ein unnötiges Hindernis darstellen, z. B., wenn eine Webanwendung Inhalte und APIs über mehrere Unterdomänen hinweg hostet. Es gibt einige allgemeine Techniken, um die Erzwingung der Richtlinie des gleichen Ursprungs sicher zu umgehen. In diesem Artikel werden einige dieser Techniken nur kurz beschrieben. Verwenden Sie die bereitgestellten Links, um diese Techniken näher zu erkunden.

Verwenden von JSONP für den anonymen Zugriff

Eine Möglichkeit zum Umgehen der Einschränkungen der Richtlinie des gleichen Ursprungs ist das Verwenden von JSONP, um einen Proxy für den Webdienst bereitzustellen. Dazu fügen Sie ein script-Tag mit einem src-Attribut ein, das auf Skript verweist, das in einer beliebigen Domäne gehostet wird. Sie können die script-Tags programmgesteuert erstellen, die URL dynamisch erstellen, auf die das srcAttribut zeigen soll, und dann Parameter an die URL über URI-Abfrageparameter übergeben. Webdienstanbieter erstellen und hosten JavaScript-Code an spezifischen URLs und geben je nach URI-Abfrageparametern unterschiedliche Skripts zurück. Diese Skripts werden anschließend an der Stelle ausgeführt, an der sie eingefügt wurden, und funktionieren wie erwartet.

Im Folgenden ist ein Beispiel für JSONP gezeigt, in dem ein Verfahren verwendet wird, das in jedem beliebigen Office-Add-In funktioniert.

// 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);
}

Implementieren von serverseitigem Code unter Verwendung eines tokenbasierten Autorisierungsschemas

Eine weitere Möglichkeit zum Umgehen der Einschränkungen der Richtlinie des gleichen Ursprungs besteht darin, serverseitigen Code bereitzustellen, der OAuth 2.0-Flüsse verwendet, damit eine Domäne autorisierten Zugriff auf Ressourcen erhalten kann, die in einer anderen Domäne gehostet werden.

Verwenden von Cross-Origin Resource Sharing (CORS)

Weitere Informationen zur Ressourcenfreigabe zwischen verschiedenen Ursprüngen finden Sie in den zahlreichen Ressourcen, die im Web verfügbar sind, z. B. Cross-Origin Resource Sharing (CORS).For more about cross-origin resource sharing, see the many resources available on the web, as Cross-Origin Resource Sharing (CORS).

Hinweis

Informationen zur Verwendung von CORS in einem Outlook-Add-In, das ereignisbasierte Aktivierung oder integrierte Spamberichterstattung (Vorschau) implementiert, finden Sie unter Verwenden des einmaligen Anmeldens (Single Sign-On, SSO) oder der ressourcenübergreifenden Ressourcenfreigabe (Cross-Origin Resource Sharing, CORS) in Ihrem ereignisbasierten Oder Spam-Reporting-Outlook-Add-In.

Erstellen Ihres eigenen Proxys unter Verwendung von IFRAME und POST MESSAGE (Cross-Window Messaging)

Ein Beispiel zur Erstellung Ihres eigenen Proxys unter Verwendung von IFRAME und POST MESSAGE finden Sie unter Cross-Window Messaging.

Siehe auch