Vidéos YouTube : identifiant vérifié, lecteur youtube-nocookie

L'identifiant doit faire 11 caractères (lettres, chiffres, - et _), sinon rien
n'est intégré. Le lecteur vient de youtube-nocookie.com. La carte OpenStreetMap
n'envoie plus que l'origine en referrer, plus l'adresse de l'arbre.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
IliesAllaliandClaude Opus 5.5 committed 2026-09-30 18:02:10 +02:00
1 parent 2253f626c7
commit f2a66be51e
1 file changed
+7 -4
+7 -4
View File
@@ -135,15 +135,17 @@ const MediaViewer = ({ media, person, onClose }) => {
// Extract YouTube video ID and build embed URL
const watchMatch = mediaUrl.match(/[?&]v=([^&]+)/)
const shortMatch = mediaUrl.match(/youtu\.be\/([^/?]+)/)
const videoId = (watchMatch?.[1] || shortMatch?.[1] || '').split('?')[0]
if (!videoId) {
const videoId = (watchMatch?.[1] || shortMatch?.[1] || '').split(/[?#]/)[0]
// Un identifiant YouTube fait 11 caractères : tout le reste est refusé plutôt qu'intégré
if (!/^[A-Za-z0-9_-]{11}$/.test(videoId)) {
return (
<div className="media-video-container">
<div className="media-video-text">{t('Lien YouTube invalide')}</div>
</div>
)
}
const embedUrl = `https://www.youtube.com/embed/${videoId}`
// youtube-nocookie : pas de cookie YouTube tant que la vidéo n'est pas lancée
const embedUrl = `https://www.youtube-nocookie.com/embed/${videoId}`
return (
<div className="media-video-container media-video-container--youtube">
<iframe
@@ -273,7 +275,8 @@ const MediaViewer = ({ media, person, onClose }) => {
src={openStreetMapEmbedUrl}
title={t('Carte OpenStreetMap')}
loading="lazy"
referrerPolicy="no-referrer-when-downgrade"
// Origine seulement : l'adresse complète contient celle de l'arbre
referrerPolicy="strict-origin-when-cross-origin"
/>
) : (
<svg