Comment puis-je détecter côté serveur (C#, asp.net mvc) si la page chargée se trouve dans un iframe? MerciDétecter si une page est dans un iframe - côté serveur
Répondre
Ceci n'est cependant pas possible.
<iframe src="mypage?iframe=yes"></iframe>
puis vérifiez si le Serverside querystring contient iframe = yes ou avec l'en-tête Referer envoyer par le navigateur.
Il n'y a aucun moyen de vérifier cela qui répondra à votre exigence de "sécurisé" comme indiqué dans votre commentaire sur la réponse @ WTP.
Je ne pense pas que le côté serveur peut faire cela, alors pourquoi ne pas mettre un contrôle caché dans votre page qui sera dans l'iframe? Lorsque l'URL de l'iframe se charge, vous pouvez ajouter du code côté client pour définir l'entrée cachée pour indiquer que vous êtes dans un iframe. Le moyen le plus contrôle serait sur le côté client dans une méthode onload, comme ceci:
// Set hidden input
someHiddenInput.value = self != top
Il est plus sûr que le querystring, mais il pourrait ne pas être encore assez de sécurité pour vous.
Mes 2 cents.
Utilisez le code suivant dans le formulaire:
<asp:HiddenField ID="hfIsInIframe" runat="server" />
<script type="text/javascript">
var isInIFrame = (self != top);
$('#<%= hfIsInIframe.ClientID %>').val(isInIFrame);
</script>
Ensuite, vous pouvez facilement vérifier si elle est un iFrame dans le code-behind:
bool bIsInIFrame = (hfIsInIframe.Value == "true");
a été testée et a travaillé pour moi.
Modifier: Veuillez noter que vous avez besoin de jQuery pour exécuter mon code ci-dessus. Pour l'exécuter sans jQuery il suffit d'utiliser un code comme le code suivant (non testé) pour définir la valeur du champ caché:
document.getElementById('<%= hfIsInIframe.ClientID %>').value = isInIFrame;
Edit 2: Cela fonctionne uniquement lorsque la page a été chargée une fois. Si quelqu'un a des idées pour améliorer cela, faites le moi savoir. Dans mon cas, heureusement, je n'ai besoin de la valeur qu'après une publication.
cela devrait être la réponse. –
no @RoyiNamir, ce n'est pas une solution côté serveur;) – tetri
@tetri, avec ce code, vous pouvez vérifier depuis le serveur si vous êtes dans un iframe. Je suis d'accord, il y a du code client, mais à mon avis, c'est la meilleure solution parce que ça ne fait pas attention à la façon dont la page est appelée. La réponse acceptée en cours requiert que la valeur de la requête soit définie dans chaque iframe, ce qui risque d'être oublié. – Undercover1989
- 1. Détecter Silverlight côté serveur
- 2. Détecter si le document IFRAME est mal formé
- 3. Comment détecter si une page Web distante est disponible
- 4. Word Automation: détecter si un saut de page est nécessaire?
- 5. Détecter si un noeud Gtk.TreeNode est développé
- 6. Vérifier si Javascript est activé côté serveur ASP.NET
- 7. Comment détecter iframe redimensionner?
- 8. Commentaires côté serveur dans asp.net (côté HTML)
- 9. Détecter si Tooltip est affiché?
- 10. Détecter si une position dans Array est déjà lancée
- 11. Détecter si IIS est activé
- 12. Page du site Google dans un iframe
- 13. deserialise json côté serveur
- 14. Un ID de session est-il généré côté serveur ou côté client?
- 15. Détecter si un ordinateur est un serveur de fichiers NetApp? (C++ non géré)
- 16. Validation complète côté serveur
- 17. Comment détecter si un lecteur spécifique est un disque dur?
- 18. Comment détecter si un nombre donné est un nombre entier?
- 19. Implémentation autocomplète côté serveur
- 20. Événement côté serveur entre Silverlight et la page hôte .aspx
- 21. Comment puis-je détecter si j'installe sur un serveur Terminal Server dans un script InnoSetup?
- 22. Identification du navigateur côté serveur en php
- 23. Côté serveur inclure HTML externe?
- 24. WIX: Comment détecter si une application tierce est installée?
- 25. Comment détecter si un gestionnaire de script est sur la page?
- 26. .NET Remoting côté serveur
- 27. Comment déterminer si un contrôle est activé sur une page?
- 28. Détecter via javascript si Silverlight est installé
- 29. Détecter si l'entité est attachée à un datacontext
- 30. comment détecter si une URL pointe vers un fichier SWF
merci, mais cela ne résout pas mon problème car je veux que la page soit accessible uniquement si dans une iframe (pour des raisons de sécurité). ajouter quelque chose à la chaîne de requête est trop facile à faire pour être sûr. – pistacchio
Si c'est pour des raisons de sécurité, alors vous faites quelque chose de mal. Au mieux, la seule chose qui pourrait vous aider à être dans un iframe est un referer. Et même cela est forgeable. La sécurité est assurée par des contrôles d'accès et de validation, et non par des réseaux d'hypothèses fragiles. – Yuliy