Accéder au contenu principal

SharePoint 2007: Forcer le mode compatibilité depuis IIS

 Dans un précédent message, nous avons vu la problématique de la maintenance d’anciennes infrastructures alors que le monde continue son avancée:

Pour rappel, le problème en question présenté ici pour du SharePoint 2007:

Ainsi la solution présentée fonctionne parfaitement, mais est plutôt radicale, car elle définie toutes les applications Web sous le même root domain avec ce mode.


Problème

Ainsi, si votre site SharePoint intranet en question fonctionne avec l’URL (http://sp.mymain.net) et que vous définissez cette option de compatibilité, elle deviendra active pour l’ensemble des applications Web ayant une URL du type (http://xxxx.mydomain.net).

L’impact après un certain nombre d’années vient avec les nouvelles applications qui ne supportent pas ce mode compatibilité et qui ont un design explosé avec ce paramètre.


Solution

Il existe une solution fournie par mon collègue (Michaël Staudenmann) permettant de forcer ce paramètre de compatibilité directement au niveau du serveur IIS. Ainsi, le serveur WEB fournit au navigateur de l’utilisateur quelle version d’IE il doit exécuter. Cela se fait avec l’option “X-UA-Compatible”.

Ce paramètre peut prendre différentes valeurs dont celle qui nous intéresse le plus pour SharePoint 2007 “IE=EmulateIE9”.

Cette mise en place doit se faire Application Web par Application Web et quelque soit la version d’IIS concernée.

Nous verrons en revanche dans nos exemples une configuration pour Windows 2008 R2.


Mise en place de la solution manuellement

Il faut lancer la console de gestion d’IIS et se placer au niveau de l’application WEB concernée. On trouve alors une icone “HTTP Response Headers”

image

On clique sur Add et ajoute le nom du header et sa valeur puis on valide par OK

image

Une fois ce paramètre entré le browser qui arrive sur ce site se voit forcé dans sa version d’engine à tourner.

Liens relatifs au sujet:


Attention avec les iFrame

Certains site SharePoint peuvent avoir des iFrames chargées et donc ceux-ci ne doivent pas se trouver avec le même paramêtre afin de ne pas créer un impact inverse pour eux.

De ce fait, il faut utiliser un second Header “X-Frame-Options” avec la valeur “SAMEORIGIN” suivant le même procéssus ci-dessus. On sera dans la configuration ci-dessous.

image

Liens relatifs au sujet:


Mise en place de la solution automatiquement

On peut résumer les configuration à appliquer dans le fichier XML suivant:


   
       
       
       
   

Mais, voyons comment faire cette action via PowerShell en se basant sur un script fourni en ligne par Avijit Sur:


param
(
   [string]$WebSiteName = $(throw "The web site name must be provided."),
   [string]$HeaderName = $(throw "The header name must be provided."),
   [string]$HeaderValue = $(throw "The header vale must be provided.")
)
#cls
# Initialize the default script exit code.
$exitCode = 0

[System.Reflection.Assembly]::LoadFrom( "C:\windows\system32\inetsrv\Microsoft.Web.Administration.dll" ) | Out-Null
try
{
    $iisVersion = Get-ItemProperty "HKLM:\software\microsoft\InetStp";
    write-host ">IIS Version", $iisVersion.MajorVersion, $iisVersion.MinorVersion
   
    if ($iisVersion.MajorVersion -eq 7)
    {
        if ($iisVersion.MinorVersion -ge 5)
        {
            Import-Module WebAdministration;
        }           
        else
        {
            if (-not (Get-PSSnapIn | Where {$_.Name -eq "WebAdministration";})) {
                Add-PSSnapIn WebAdministration;
            }
        }
    }
    
    $PSPath =  'MACHINE/WEBROOT/APPHOST/' + $WebSiteName
    
    Remove-WebConfigurationProperty -PSPath $PSPath -Name . -Filter system.webServer/httpProtocol/customHeaders -AtElement @{name =$HeaderName }
             
    $iis = new-object Microsoft.Web.Administration.ServerManager
    $config = $iis.GetWebConfiguration($WebSiteName) #i.e. "Default Web Site"
    $httpProtocolSection = $config.GetSection("system.webServer/httpProtocol")
    $customHeadersCollection = $httpProtocolSection.GetCollection("customHeaders")
 
    $addElement = $customHeadersCollection.CreateElement("add")
    $addElement["name"] = $HeaderName
    $addElement["value"] = $HeaderValue
 
    $customHeadersCollection.Add($addElement)
 
    $iis.CommitChanges() 
    write-host $iis
}
Catch [System.Exception]
{
    $exitCode = 1
    write-host "Error" $_.Exception.Message
}
# Indicate the resulting exit code to the calling process.
if ($exitCode -gt 0)
{
    "`nERROR: Operation failed with error code $exitCode."
}
"`nDone."
exit $exitCode

#SOURCE: https://gallery.technet.microsoft.com/scriptcenter/PowerShell-Add-custom-HTTP-728eba24
# &"\Set-HTTP-Response-Header.ps1" "SharePoint - sp.mymain.net80" "X-UA-Compatible" "IE=EmulateIE9"



   
       
       
       
   

#SPWebApp1
.\Set-HTTP-Response-Header.ps1 "SharePoint - sp.mymain.net80" "X-UA-Compatible" "IE=EmulateIE9"
.\Set-HTTP-Response-Header.ps1 "SharePoint - sp.mymain.net80" "X-Frame-Options" "SAMEORIGIN"

#CentralAdmin
.\Set-HTTP-Response-Header.ps1 "SharePoint Central Administration v3" "X-UA-Compatible" "IE=EmulateIE9"
.\Set-HTTP-Response-Header.ps1 "SharePoint Central Administration v3" "X-Frame-Options" "SAMEORIGIN"

#>


Le fichier PowerShell peut être sauvegardé dans le répertoire voulu avec le nom “Set-HTTP-Response-Header.ps1”. Il suffit alors de lancer une commande PowerShell depuis le répertoire en question et exécuter les commandes:

#SPWebApp1
.\Set-HTTP-Response-Header.ps1 "SharePoint - sp.mymain.net80" "X-UA-Compatible" "IE=EmulateIE9"
.\Set-HTTP-Response-Header.ps1 "SharePoint - sp.mymain.net80" "X-Frame-Options" "SAMEORIGIN"

#CentralAdmin
.\Set-HTTP-Response-Header.ps1 "SharePoint Central Administration v3" "X-UA-Compatible" "IE=EmulateIE9"
.\Set-HTTP-Response-Header.ps1 "SharePoint Central Administration v3" "X-Frame-Options" "SAMEORIGIN"

On se trouvera avec les deux applications Web (SharePoint site et Centrale Admin) mise à jour pour supporter ces nouveaux paramètres.

Il ne vous reste plus qu’à adapter ces exécutions à votre configuration et exécuter ces commandes sur tous les serveurs WEB de vos fermes SharePoint 2007.


Conclusion

Cette solution n’est pas magique, mais vous permet de laisser les postes de travail fonctionner selon leurs besoins et non les forcer pour une solution qui n’est plus ammenée à évoluer.

Ceci vous laissera alors du temps pour préparer votre migration.

Romelard Fabrice [MBA Risk Management]

Commentaires

Posts les plus consultés de ce blog

Redonner vie à une Microsoft Surface RT : le guide ultime vers Linux !

Vous avez une vieille Microsoft Surface RT qui traîne dans un tiroir ? Vous savez, cette tablette de 2012 devenue inutilisable depuis l'abandon officiel de Windows RT par Microsoft ? Ne la jetez surtout pas ! Dans ma dernière vidéo, je vous montre comment transformer cet appareil, autrefois considéré comme un "presse-papier", en une tablette Linux moderne et parfaitement fonctionnelle . Pourquoi ce projet ? L'objectif est simple : transformer ce matériel pour en faire un dashboard dédié à mon système Home Assistant. En installant postmarketOS , une version de Linux spécialement conçue pour les appareils ARM abandonnés, on redonne une seconde jeunesse à cette machine . Ce que vous allez apprendre dans ce tutoriel complet : La libération du matériel : Comment réinstaller la version d'origine pour passer outre les blocages de Windows 8.1 . Jailbreak & Secure Boot : La procédure indispensable pour déverrouiller la machine et permettre l'installation d...

Série de Videos sur Home Assistant intégrant la production Photovoltaïque

 Un certain nombre de vidéos sont en ligne pour intégrer sa production photovoltaïque dans Home Assistant en partant de la base. Installation de Home Assistant: On peut ensuite intégrer les composant des Micro-Onduleurs Enphase, mais aussi les batteries Enphase: Ou encore le composant de contrôle Ecojoko: Ce qui permet alors de faire des comparaisons entre les valeurs capturées: Des videos seront encore publiés dans les prochaines semaines sur différents aspects de cette solution. Fab

Mixer les batteries Enphase et Zendure : La solution ultime pour l'autoconsommation ?

Introduction Vous avez déjà une installation solaire équipée de micro-onduleurs Enphase , mais vous trouvez que le stockage officiel de la marque est trop coûteux ou difficile à installer en DIY ? Vous n'êtes pas seul. Aujourd'hui, je vous partage mon retour d'expérience complet sur une configuration qui intrigue beaucoup de monde : le couplage d'un système Zendure SolarFlow avec un environnement Enphase existant. Pourquoi vouloir mixer ces deux marques ? Le système Enphase est une référence en termes de fiabilité, mais l'ajout de batteries IQ Battery peut représenter un investissement lourd. À l'inverse, Zendure propose avec le SolarFlow une solution de stockage plug-and-play extrêmement flexible et souvent plus abordable. L'idée est simple : utiliser le SolarFlow comme "tampon" entre vos panneaux et vos micro-onduleurs pour stocker l'excédent de la journée et le réinjecter la nuit. Le montage : Est-ce vraiment compliqué ? Dans ma dernière ...