- en version
- version fr
english version
A few days ago I was playing with oEmbed, this is a format and a service used by many sites for online documents, such as videos (youtube, vimeo, dailymotion ...). This allows you to retrieve, among other things, the HTML code to insert in a html page for viewing the content.
I needed to retrieve this information client-side, in JavaScript.
For example, there's some jQuery plugins.
But I was limited by cross domain restrictions on XMLHttpRequest by
browsers (that means, we can only make requests on the same domain as
the current page).
The solution is to do it server side, and the client can query it.
I was not convinced by the Php classes that I found.
So here's my solution. You only need that the curl extension is installed with php.
It's just a few lines of code. And bonus, we can deliver some JSONP
, even if the real service does not.
implementation example, a page example-proxy.php
just request this page, for example:
http://example.com/example-proxy.php?url=http%3A//www.youtube.com/watch%3Fv%3DbDOYN-6gdRE&format=json
example of file requesting the service (via JQuery)
The services included are YouTube, Vimeo and Dailymotion, but it is possible to override oembedProviders to add more.
I put this under the MIT license, so it can be useful to someone else ;) ...
version française
un proxy oEmbed léger en php
Il y a quelques jours j'ai eu à jouer avec oEmbed, c'est un format et un service utilisé par beaucoup de sites de documents en ligne, vidéos par exemple (youtube, vimeo, dailymotion...). Celà permet de récupérer, entre autre, le code html insérable dans une page pour visualiser un contenu.
J'avais besoin de récupérer ces informations côté client, en JavaScript.
On trouve par exemple des plugins jQuery.
Seulement, j'étais limité par les restrictions multi domaine des navigateurs
sur XMLHttpRequest (en clair, on peut faire des requêtes uniquement sur
le même domaine que la page courante).
La solution, faire la vraie requête côté serveur, que le client interroge.
Les classes php que j'ai trouvées ne m'ont pas convaincu.
Alors voici ma solution. Il suffit que l'extension curl soit installée avec php.
C'est juste quelques lignes de code. Et bonus, on peut délivrer du
jsonp même si le vrai
service ne le propose pas.
exemple d'implémentation, une page example-proxy.php
Il suffit d'interroger cette page, par exemple :
http://example.com/example-proxy.php?url=http%3A//www.youtube.com/watch%3Fv%3DbDOYN-6gdRE&format=json
exemple de fichier interrogeant le service (via JQuery)
Les services pris en compte sont YouTube, Vimeo et Dailymotion, mais il est possible de surcharger oembedProviders pour en ajouter d'autres.
Je met çà sous licence MIT, si çà peut servir à quelqu'un d'autre ;) ...