XSL ne fonctionne pas sous Google Chrome
J'ai vu beaucoup de postes tout autour à ce sujet... mais je ne peux pas, pour la vie de moi, essayer de comprendre ce que mon problème est! Google Chrome affiche juste une page blanche quand j'essaie de transformer un fichier XML avec XSL. Quand je l'affichage de la source, je vois le XML brut. IE fonctionne.
J'ai un document XML qui ressemble à...
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="http://localhost/xsl/listXSL.php"?>
<links>
<link id="1" name="Google Home Page" url="http://www.google.com/" clicks="0" />
<link id="2" name="Facebook" url="http://www.facebook.com/" clicks="1" />
<link id="3" name="Gmail" url="http://gmail.com" clicks="2" />
</links>
... et puis le lié fichier XSL qui ressemble à...
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each select="links/link">
<a>
<xsl:attribute name="href">
<xsl:value-of select="@url" />
</xsl:attribute>
<xsl:value-of select="@name" />
</a><br />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Vous remarquerez que le fichier XSL est en fait un fichier PHP, mais cela fonctionne très bien dans d'autres navigateurs et j'ai essayé de le changer de .xsl pour Chrome, mais il n'aide pas. Ce que je fais de mal?
- Vous pouvez voir: stackoverflow.com/questions/2981524/...
Vous devez vous connecter pour publier un commentaire.
La raison pour laquelle cela ne fonctionne pas est dû à un problème de sécurité que Chrome a abordé dans une controverse façon[1][2][3][4], par le blocage des fichiers XML à partir de l'accès local XSLT fichiers dans le même répertoire, tandis que les fichiers HTML peuvent accéder .CSS fichiers dans le même répertoire très bien.
La justification donnée par le Chrome équipe en 2008 a été cette:
Imaginez ce scénario:
Vous recevez un message électronique à partir d'un attaquant contenant une page web comme une pièce jointe, que vous téléchargez.
Vous ouvrez la page web locale dans votre navigateur.
La page web locale crée un dont la source est https://mail.google.com/mail/.
Parce que vous êtes connecté à Gmail, le cadre charge les messages dans votre boîte de réception.
La page web locale lit le contenu de l'image par l'utilisation de JavaScript pour accéder à des images[0].document.documentElement.innerHTML. (Une page web sur Internet ne serait pas en mesure d'effectuer cette étape, car il serait venu à partir d'un non-Gmail origine; la même la politique de l'origine serait la cause de la lecture à l'échec.)
La page web locale place le contenu de votre boîte de réception en un et envoie les données via un formulaire POST pour l'attaquant du serveur web. Maintenant, l'attaquant a votre boîte de réception, qui peut être utile pour faire du spam ou de vol d'identité.
Il n'y a rien de Gmail peuvent faire pour se défendre contre cette attaque.
Je suis d'accord c'est ennuyeux, comme un correctif, vous avez 2 solutions:
Essayer de lancer google chrome avec la
--allow-file-access-from-files
switch (j'ai pas testé moi-même)Le télécharger vers un ordinateur hôte, et tout ira bien.
--allow-file-access-from-files
ne semble pas avoir d'effet dans cette situation.Téléchargement pour accueillir soves problème pour moi. --allow-file-access-de-fichiers solution switch ne fonctionne pas pour moi.
Dans les anciennes version de Chrome, si vous n'avez pas de sortie un document avec un vocabulaire (HTML, XHTML, SVG, etc.) vous ne serez pas obtenir un rendu de la page.
En version moderne (j'ai
10.0.612.3 dev
installé), vous obtenez un sans style document XML (avec une erreur d'analyse dans votre cas, en raison de la plus d'un élément racine du résultat).Solution: Sortie correcte (avec tous les éléments obligatoires) HTML 4.0 document, ou une bon (également avec un bon espace de noms) XHTML 1.0 document.
À l'aide de --allow-fichier-accès à partir des fichiers de l'interrupteur fait le truc pour moi.
J'ai essayé d'utiliser la documentation hors-ligne à partir du logiciel installé sur mon système. IE a montré contenu que de demander la permission pour activer le contenu. Je dirais que cela peut être ajouté à chrome ainsi, sans sacrifier la sécurité.
J'ai été en mesure de charger du contenu xml en html, en chrome, en stockant le xml en tant que variable en javascript, comme illustré ci-dessous.
cette réponse m'a aidé