CORS et affichage de contenu Web distant avec WSRP et l'afficheur de contenu Web

CORS (Cross-Origin Resource Sharing) est un mécanisme qui prend en charge les demandes envoyées par une page Web à un serveur qui ne figure pas sur le même domaine. Le concept CORS doit être pris en charge à la fois par le navigateur Web et le serveur.

Pour plus d'informations sur la prise en charge de CORS dans HCL Digital Experience Portal, voir la section Gestion des règles CORS dans HCL Portal.

Si vous utilisez l'affichage distant avec WSRP et le portlet d'affichage de contenu Web comme modèle de distribution de contenu Web, vous devez vous familiariser avec CORS. Dans les modes Editer les paramètres partagés et Configurer, un portlet d'affichage de contenu Web consommé utilise des demandes XMLHttpRequests pour charger des informations à partir du portail de contenu Web distant. CORS peut empêcher la connexion distante d'aboutir. Généralement, le portail de contenu Web distant qui agit en tant que producteur WSRP se trouve sur un autre domaine que le portail avec le portlet d'affichage de contenu Web qui agit en tant que consommateur WSRP. Par conséquent, le portail Producteur peut rejeter les demandes XMLHttpRequests lorsque vous tentez de configurer le portlet d'affichage de contenu Web consommé sur votre portail Consommateur.

Les navigateurs Web peuvent implémenter le concept CORS de différentes manières ou pas du tout. Par conséquence, vous êtes susceptible de rencontrer des problèmes uniquement lorsque vous utilisez un navigateur Web spécifique. Lorsque de tels problèmes se produisent, sur la console JavaScript, les demandes réalisées par le portlet d'affichage de contenu Web génèrent une erreur avec un code d'état 403 (Forbidden). Exemple : PROPFIND http://WSRP_CONSUMER_HOSTNAME:WSRP_CONSUMER_PORT/WSRP_CONSUMER_CONTEXT_ROOT/WsrpProxyPortlet/ResourceProxy/.../WSRP_PRODUCER_CONTEXT_ROOT/mycontenthandler/dav/content/libraries/ 403 (Forbidden)

Si vous rencontrez des problèmes lorsque vous utilisez le mode Editer les paramètres partagés ou Configurer du portlet d'affichage de contenu Web consommé comme indiqué précédemment, vous pouvez choisir l'une des options suivantes :
  • La meilleure solution consiste à ajouter le consommateur WSRP en tant qu'origine sécurisée à une liste blanche du producteur WSRP. Pour plus d'informations, voir la section Gestion des règles CORS dans HCL Portal.
    Remarque : Si vous choisissez cette option, sachez que vous devrez peut-être répéter cette configuration après la mise à niveau ou la migration d'HCL Portal vers une version plus récente.
  • Configurez le proxy de ressource WSRP du consommateur WSRP pour l'empêcher de réacheminer l'en-tête HTTP Origin qui est utilisé par CORS. Si les demandes ne contiennent pas l'en-tête, le portail de contenu Web distant ne rejette pas les demandes. Pour plus d'informations, voir Personnalisation du réacheminement d'en-têtes HTTP par le proxy de ressource WSRP.
    Remarque : Si vous choisissez cette option, assurez-vous de bien comprendre l'impact de la suppression de l'en-tête HTTP Origin. Le serveur cible traite toutes les demandes qui sont effectuées via le proxy de ressource WSRP comme des demandes de même origine, même si le serveur cible prend en charge CORS et rejette normalement les demandes issues de ce domaine.
  • Désactivez la prise en charge de CORS du portail Producteur WSRP. Pour désactiver CORS, affectez la valeur false à la propriété com.ibm.portal.csrf.enabled du fournisseur d'environnement de ressources du service de configuration WP du portail. Redémarrez ensuite votre portail pour que les modifications soient prises en compte. Pour plus d'informations sur les propriétés de configuration de service du portail, reportez-vous à la section Définition des propriétés de configuration de service.
    Remarque : Si vous choisissez cette option, assurez-vous de bien comprendre ce qu'implique de désactiver la prise en charge de CORS. Lorsque la prise en charge de CORS est désactivée, le portail accepte toutes les demandes d'origine croisée qu'il rejette lorsque la prise en charge de CORS est activée.