Question

Je développe une page web qui a besoin d'afficher, dans un iframe, un rapport servi par le serveur SharePoint d'une autre société. Ils sont très bien avec cela.

La page que nous essayons de rendre dans le iframe nous donne X-Frame-Options: SAMEORIGIN qui provoque le navigateur (au moins) IE8 de refuser de rendre le contenu dans un cadre.

D'abord, est-ce quelque chose qu'ils peuvent contrôler ou est-ce quelque chose de SharePoint ne fonctionne tout simplement par défaut? Si je leur demande de désactiver cette, ils pourraient même le faire?

En second lieu, je peux faire quelque chose pour dire au navigateur d'ignorer cette http tête et juste rendre le cadre?

Était-ce utile?

La solution

Si la 2e compagnie est heureux pour vous d'accéder à leur contenu dans un IFrame ils doivent prendre la restriction au large - ils peuvent le faire assez facilement dans l'IIS config.

Il n'y a rien que vous pouvez faire pour le contourner et tout ce qui fonctionne devrait se patché rapidement dans un correctif de sécurité. Vous ne pouvez pas dire au navigateur de rendre juste la trame si l'en-tête de contenu source ne dit pas permis dans des cadres. Ce serait plus facile pour le détournement de session.

Si le contenu est GET que vous faites des données pas republier vous pouvez alors obtenir le côté serveur proxy de page et le contenu sans l'en-tête, mais tout retour après devrait s'invalidées.

Autres conseils

Mise à jour 2019: Vous peut X-Frame-Options by-pass dans un <iframe> en utilisant mon X-Frame-Bypass Web Component. Il étend l'élément iFrame en utilisant plusieurs procurations CORS et il a été testé dans le dernier Firefox et Chrome.

Vous pouvez l'utiliser comme suit:

  1. (en option) Inclure personnalisés Eléments avec intégré Prolonge polyfill Safari:

    <script src="https://unpkg.com/@ungap/custom-elements-builtin"></script>
    
  2. Inclure le module de dérivation X-Frame-JS:

    <script type="module" src="x-frame-bypass.js"></script>
    
  3. Insérez le X-Frame-Bypass personnalisé élément:

    <iframe is="x-frame-bypass" src="https://example.org/"></iframe>
    

L'en-tête-Options X-Frame est une fonction de sécurité appliquée au niveau du navigateur.

Si vous avez le contrôle sur votre base d'utilisateurs (IT dept pour application corp), vous pouvez essayer quelque chose comme un script Greasemonkey (si vous pouvez a) Déployez Greasemonkey à travers tout le monde et b) déployer votre script de manière partagée) .. .

Vous pouvez proxy leur résultat. Créer un point sur votre serveur, et ce point de terminaison ont ouvert une connexion au noeud final cible, et simplement en arrière de la circulation de l'entonnoir.

En ce qui concerne la deuxième question - vous pouvez utiliser Fiddler réponse set en-tête de X-Frame-Options manuellement à quelque chose comme ALLOW-FROM * . Mais, bien sûr, cette astuce ne fonctionnera que pour vous -. D'autres utilisateurs ne seront pas encore en mesure de voir le contenu iframe (si elles ne font la même chose)

Oui Fiddler est une option pour moi:

  1. Ouvrir Menu Fiddler> Règles> Personnaliser les règles (ce édite efficacement CustomRules.js).
  2. Trouvez la fonction OnBeforeResponse
  3. Ajoutez les lignes suivantes:

    oSession.oResponse.headers.Remove("X-Frame-Options");
    oSession.oResponse.headers.Add("Access-Control-Allow-Origin", "*");
    
  4. N'oubliez pas d'enregistrer le script!
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top