Je veux spécifier une autre image qui sera affichée en cas d'échec de oEmbed.
Le cas d'utilisation spécifique est d'offrir une alternative lorsque la Chine (ou d'autres pays) bloquent YouTube. Nous savons que le contenu YouTube n'y sera pas disponible, mais nous souhaitons fournir une image alternative dans ce cas.
Le code d'erreur oEmbed peut-il être rendu accessible à cet effet?
GET /photos/bees/2362225867/ HTTP/1.1 Host: flickr.com Accept: application/oembed+xml
. L'alternative est la valeur par défaut pour obtenir un code http d'erreur, comme 406 Not Acceptable. Cela devrait être utile pour renvoyer un message.<iframe>
code HTML et c'est ce qui est intégré dans la publication et c'est ce qui est serveur pour le client: a<iframe>
. Lorsque le client chinois essaie de charger le contenu du,<iframe>
c'est quand il est bloqué. Il n'y a rien côté serveur impliqué. Je n'ai pas testé avec d'autres fournisseurs oEmbed mais je pense qu'ils fonctionnent tous de la même manière. En fait, si l'oEmbed était fait côté client, il n'y aurait pas de véritable contenu intégré.Réponses:
Je pense que la meilleure chose à faire dans ce cas est d'envelopper votre contenu oEmbed avec un
div
avant de le rendre, puis d'afficher une autre image avec labackground-image
propriété CSS . Si la vidéo se charge, le contenu oEmbed couvrira l'image d'arrière-plan.Vous pouvez ajouter le wrapper à l'aide du
embed_oembed_html
filtre.Si vous avez peur de charger des éléments supplémentaires, vous pouvez effectuer une vérification côté client avec JS pour voir si l'oEmbed est chargé, et sinon, charger une image d'arrière-plan dans le wrapper.
Vous pourriez devenir beaucoup plus compliqué en ajoutant des champs personnalisés pour chaque vidéo, mais c'est essentiellement l'essentiel.
la source
Une approche pourrait être de faire une autre demande en utilisant oEmbed côté serveur via un proxy basé en Chine.
De cette façon, vous saurez à l'avance si l'appel à la ressource sur le client va échouer. Au début de la demande de page, vous pouvez déterminer où se trouve géographiquement l'IP du client, effectuer un appel côté serveur via un proxy vers la ressource, par exemple YouTube, puis tirer parti de l'erreur oEmbed que vous obtiendrez probablement.
Vous pouvez jeter un œil à Wonderproxy pour y parvenir (je ne suis pas affilié à eux mais j'entends de bonnes choses)
la source