Question

Déconcerté par la grande quantité de réponses et des problèmes à ce sujet.

Maintenant, j'accepte la situation de sécurité JS interdisant l'accès inter-domaine de iFrame à la fenêtre de conteneur / pages, mais les résolutions idéales cité dans de nombreux articles de Fragment identificateurs ou postMessage API est vraiment déconcertant.

Ce que je veux faire est de reproduire ce que vimeo semble avoir arraché; leur nouveau code embed iframe

<iframe src="http://player.vimeo.com/video/17263117" width="400" height="225" frameborder="0"></iframe>

Utilise http://a.vimeocdn.com/js/player_combined.opt .js? 8ba54 et semble être en mesure de remplir une URL referrer dans la source du iframe dans la page de chargement des parents. C'est à dire. www.donkey.com/myvideo.html est insérée dans le http://player.vimeo.com/video/ 17263117 . Normalement, avec des blocs de sécurité sur JS cela est impossible avec parent.location.href simple. Alors, j'ai regardé et sont en cours depuis une chasse vraiment sauvage de l'oie pour trouver comment cela peut se faire.

J'ai essayé de comprendre leur JS et a joué avec l'API postMessage mais n'ai rien à montrer. Toute orientation est la bienvenue beaucoup.

Était-ce utile?

La solution

Il n'a pas besoin d'obtenir de la source de <iframe> du tout (restrictions de sécurité empêchent que vous avez déjà noté), il est transmis au serveur en en-tête, et il est rendu dans la page par leur serveur pour la JavaScript pour utiliser, regardez la variable options définie dans la page.


Prenons un exemple: http://www.jsfiddle.net/nick_craver/FfuPk/

Si vous regardez la demande http://player.vimeo.com/video/17263117

Vous verrez passé du referrer get:

Referer: http://fiddle.jshell.net/nick_craver/FfuPk/show/light/

Dans un bloc de script dans la page chargée par le iframe, vous verrez:

var options = {config: {
               //....
               "referrer":"http:\/\/fiddle.jshell.net\/nick_craver\/FfuPk\/show\/light\/"
               //....
              };

qui est comment il obtient le referrer, en fin de compte de l'en-tête envoyé par votre navigateur au serveur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top