[spip-dev] Pb d'URL absolue avec le compresseur quand on utilise deux domaines différents sur le même site

Bonjour,

Nous avons développé un site ou des domaines différents sont utilisés pour d’une part le site public accessible aux visiteurs avec accès interdit à “ecrire/”, et d’autre part le site privé accessible uniquement aux contributeurs, partie publique comme partie “ecrire/”.

Du coup, si la compression a lieu quand c’est un contributeur qui se balade sur la partie publique du site privé, on se retrouve avec des URL absolues dans les CSS compressées qui pointent vers le site privé.

Du coup, quand un visiteur se balade sur le site public, en utilisant la même CSS, il charge des ressources venant d’un autre domaine.

Pas de bol, le site est en HTTPS, donc cela déclenche des alertes de sécurité dans IE6 (on ne rigole pas, merci), puisqu’on charge dans une page HTTPS d’un domaine une ressource d’un autre domaine.

Donc, si j’ai bien suivi les renvois dans le code, c’est suivre_lien() qui semble utiliser comme base l’URL courante et non l’URL définie pour le site.

Est-il envisageable d’utiliser plutôt l’URL du site ?

-Nicolas

Bonjour,

Nous avons développé un site ou des domaines différents sont utilisés pour d'une part le site public accessible aux visiteurs avec accès interdit à "ecrire/", et d'autre part le site privé accessible uniquement aux contributeurs, partie publique comme partie "ecrire/".

Du coup, si la compression a lieu quand c'est un contributeur qui se balade sur la partie publique du site privé, on se retrouve avec des URL absolues dans les CSS compressées qui pointent vers le site privé.

Les urls absolues calculées dans dans la css comprimée le sont par rapport à l'url de la css elle même...
Il suffit donc de fournir la css sous forme d'url absolue dans la page, avec le bon domaine, pour maitriser les urls absolues inclues dans celle-ci
Cependant, dans ce cas SPIP va faire une requete http sur ta css, et je ne suis pas sur qu'elle passe en https (a voir).

Le vrai bug est a mon sens le fait qu'on ne genere pas des caches différents pour les css compressees en fonction du domaine sur lequel on consulte le site.

Du coup, quand un visiteur se balade sur le site public, en utilisant la même CSS, il charge des ressources venant d'un autre domaine.

Pas de bol, le site est en HTTPS, donc cela déclenche des alertes de sécurité dans IE6 (on ne rigole pas, merci), puisqu'on charge dans une page HTTPS d'un domaine une ressource d'un autre domaine.

Ça c'est le second bug : il faudrait generer des urls absolues relatives au protocole "//monsite.com/squelettes/css/img/monimage.png"

Donc, si j'ai bien suivi les renvois dans le code, c'est suivre_lien() qui semble utiliser comme base l'URL courante et non l'URL définie pour le site.

Est-il envisageable d'utiliser plutôt l'URL du site ?

Si l'url principale du site te vas dans tous les cas, tu peux forcer tout ça dans ton head :

[(#CHEMIN{macss.css}|url_absolue{#URL_SITE_SPIP}|url_absolue_css)]

qui contiendra donc directement les bonnes urls absolues et ne sera plus impactée par la compression.

Cédric

Merci Cédric, nous regardons ça !