Saya ingin menentukan gambar alternatif yang akan ditampilkan ketika oEmbed gagal.
Kasus penggunaan khusus adalah untuk menawarkan alternatif ketika China (atau negara lain) memblokir YouTube. Kami tahu konten YouTube tidak akan tersedia di sana, tetapi ingin memberikan gambar alternatif dalam kasus itu.
Apakah kode kesalahan oEmbed dapat diakses untuk tujuan ini?
GET /photos/bees/2362225867/ HTTP/1.1 Host: flickr.com Accept: application/oembed+xml
. Alternatif adalah default untuk mendapatkan kode http kesalahan, seperti 406 Tidak Dapat Diterima. Ini harus bermanfaat untuk mengembalikan pesan.<iframe>
HTML dan itulah yang dimasukkan dalam pos dan itulah yang merupakan server untuk klien: a<iframe>
. Ketika klien dari Cina mencoba memuat konten<iframe>
adalah ketika diblokir. Tidak ada sisi server yang terlibat. Saya belum diuji dengan penyedia oEmbed lain tapi saya pikir mereka semua bekerja dengan cara yang sama. Bahkan, jika oEmbed akan dilakukan sisi klien tidak akan ada konten nyata yang ditanamkan.Jawaban:
Saya pikir hal terbaik untuk dilakukan dalam hal ini adalah membungkus konten oEmbed Anda dengan
div
sebelum mereka diberikan dan kemudian menunjukkan gambar alternatif denganbackground-image
properti CSS . Jika video dimuat, maka konten oEmbed akan menutupi gambar latar belakang.Anda dapat menambahkan pembungkus menggunakan
embed_oembed_html
filter.Jika Anda khawatir tentang memuat elemen tambahan, maka Anda dapat melakukan pemeriksaan sisi klien dengan JS untuk melihat apakah oEmbed dimuat, dan jika tidak, muat gambar latar belakang ke dalam pembungkus.
Anda bisa menjadi jauh lebih rumit dengan menambahkan bidang khusus untuk setiap video, tetapi itulah intinya.
sumber
Salah satu pendekatan mungkin untuk membuat permintaan lain menggunakan oEmbed di sisi server melalui proxy yang berbasis di Cina.
Dengan cara ini Anda akan tahu sebelumnya jika panggilan ke sumber daya pada klien akan gagal. Pada awal halaman permintaan Anda dapat memastikan di mana IP klien berada secara geografis, melakukan panggilan sisi server melalui proxy ke sumber daya misalnya youtube dan kemudian memanfaatkan kesalahan oEmbed Anda mungkin akan mendapatkan.
Anda bisa melihat Wonderproxy untuk mencapai ini (saya tidak berafiliasi dengan mereka tetapi mendengar hal-hal baik)
sumber