MVC 5 empêche l'accès au contenu via Iframe
Depuis la mise à niveau à partir de MVC4 à MVC5, j'ai remarqué un serveur supplémentaire en-tête ajouté à mes pages web:
X-Frame-Options: SAMEORIGIN
Je comprends les prestations de la sécurité de l'ajout de cette balise, mais l'une des pages est destiné à être inclus à l'intérieur d'un iframe à partir d'autres projets (sur d'autres domaines), cet en-tête supplémentaire est la prévention de ce.
J'ai vérifié ce n'est pas l'hébergement de serveur IIS7 c'est l'ajout de l'en-tête, et quand je rétrogradés à MVC4 - l'en-tête a disparu.
Personne ne sait comment faire pour supprimer ce défaut de MVC5?
- Cette même question a seulement demandé, donc si vous n'obtenez pas de réponse ici, garder un oeil sur celui-là.
Vous devez vous connecter pour publier un commentaire.
MVC5 ajoute automatiquement l'en-tête HTTP X-Frame-Options avec
SAMEORIGIN
. Cela empêche votre site d'être chargé en uniframe
.Mais on peut le désactiver dans
Application_Start
dans leGlobal.asax.cs
.Exemple
Mise à jour
J'ai écrit un post à ce sujet MVC5 empêche votre site web en cours de chargement dans un IFRAME
AllowAnyOriginAttribute : ActionFilterAttribute
. Puis-je modifier la configuration par demande, ou estApplication_PreSendRequestHeaders
encore préféré dans ce scénario (comme par stackoverflow.com/a/20254341/65611)?if (!this._config.SuppressXFrameOptionsHeader) httpContext.Response.AddHeader("X-Frame-Options", "SAMEORIGIN");
web.config
<system.webServer> ... <httpProtocol> <customHeaders> <add name="X-Frame-Options" value="SAMEORIGIN" /> </customHeaders> </httpProtocol> ... </system.webServer>
Essayer quelque chose comme cela dans
Global.asax
:EDIT:
Regarder réponse de Colin Bacon. Il est plus correcte que la mienne.
En bref - ne retirez pas cet en-tête si vous ne souhaitez pas exécuter votre site en IFRAME, car il va ouvrir la falsification de la vulnérabilité. Mais si vous voulez le retirer utiliser
AntiForgeryConfig.SuppressXFrameOptionsHeader = true;
dansApplication_Start
, c'est plus le moyen le plus propre pour cela.AntiForgeryConfig.SuppressXFrameOptionsHeader = true;
Si vous voulez un peu plus de souplesse, voici un ActionAttribute qui ajoute/supprime les en-têtes basés sur une liste blanche. Si le référent n'est pas dans la liste blanche, puis la SAMEORIGIN en-tête est laissé en place. J'allais coller le code, mais se plaint de la longueur.
https://long2know.com/2016/06/asp-net-anti-forgery-xframe-options/
Ici est un remplacement de la méthode d'Extension pour le
HtmlHelper
classe. Il sera le premier clair tousX-Frame-Options
en-têtes, puis ajouter d'un seulX-Frame-Options
en-tête ajouté par le haut-AntiForgeryToken
méthode.Cette technique respecte les
SuppressXFrameOptionsHeader
, mais a l'inconvénient de retrait tous précédemment ajoutéX-Frame-Options
en-têtes, même ceux avec des valeurs autres queSAMEORIGIN
.Personnellement, je ne pense pas que c'est une bonne idée de désactiver les X-Frame-Options à travers l'ensemble du site.J'ai créé un ASP.NET MVC filtre qui supprime cet en-tête et j'ai tout simplement appliquer ce filtre pour les parties du site qui sont utilisés dans des iFrames par exemple, les widgets.