HTTP Permissions-Policy speaker-selection

Typ

Die speaker-selection-Direktive steuert den Zugriff auf die Audio Output Device Selection API zur Lautsprecher-Auswahl.

Syntax

Die Direktive definiert eine Allowlist für Ursprünge, die Audio-Output-Geräte auswählen dürfen.

http
Permissions-Policy: speaker-selection=(self)
Permissions-Policy: speaker-selection=(self "https://audio-player.com")
Permissions-Policy: speaker-selection=()

Direktiven

Die Direktive unterstützt Standard-Allowlist-Werte für präzise Zugriffssteuerung.

self
Erlaubt Speaker-Selection nur für das Hauptdokument des gleichen Ursprungs. Eingebettete iFrames von anderen Ursprüngen werden blockiert.
origin-list
Liste von Ursprüngen in Anführungszeichen, z.B. "https://player.audio-platform.example.com", die zusätzlich zum Hauptdokument Speaker-Selection verwenden dürfen. Für Audio-Player-Widgets.

Beispiele

Die folgenden Beispiele zeigen typische Anwendungsfälle für Musik-Player, Video-Conferencing und Audio-Production-Tools.

Music-Player mit Audio-Output-Selection

Ein Musik-Player erlaubt Nutzern die Auswahl des Audio-Output-Geräts für Multi-Room-Audio.

http
HTTP/1.1 200 OK
Content-Type: text/html
Permissions-Policy: speaker-selection=(self)

<!DOCTYPE html>
<html>
<head><title>Music Player</title></head>
<body>
  <audio id="player" controls src="/music.mp3"></audio>
  <select id="speakers"></select>
  <script>
    navigator.mediaDevices.enumerateDevices().then(devices => {
      devices.filter(d => d.kind === 'audiooutput').forEach(device => {
        const option = document.createElement('option');
        option.value = device.deviceId;
        option.text = device.label;
        document.getElementById('speakers').appendChild(option);
      });
    });

    document.getElementById('speakers').addEventListener('change', async (e) => {
      const audio = document.getElementById('player');
      await audio.setSinkId(e.target.value);
    });
  </script>
</body>
</html>

Video-Conferencing mit Audio-Routing

Eine Video-Conferencing-App erlaubt einem eingebetteten Player Audio-Output-Auswahl.

http
HTTP/1.1 200 OK
Content-Type: text/html
Permissions-Policy: speaker-selection=(self "https://meeting.conference.example.com")

<!DOCTYPE html>
<html>
<head><title>Video Meeting</title></head>
<body>
  <iframe src="https://meeting.conference.example.com/room/12345"
          allow="speaker-selection; microphone; camera"></iframe>
</body>
</html>

REST-API ohne Speaker-Selection

Ein API-Endpunkt deaktiviert alle Audio-Device-Selection-APIs.

http
HTTP/1.1 200 OK
Content-Type: application/json
Permissions-Policy: speaker-selection=()

{
  "status": "success",
  "audio_url": "https://cdn.example.com/audio.mp3"
}

Vorteile für die Systemarchitektur

  • Ermöglicht Multi-Room-Audio und flexible Audio-Routing-Setups
  • Verhindert unerwünschte Audio-Output-Manipulation durch Drittanbieter
  • Unterstützt professionelle Audio-Production-Workflows im Browser
  • Reduziert Fingerprinting-Risiken durch Device-Enumeration-Kontrolle

Spezifikation

Definiert in der W3C Audio Output Devices API Spezifikation. Chromium-basierte Browser. Erfordert HTTPS und explizite Nutzer-Permission für Device-Enumeration.

Weitere Spezifikationen

Permissions-Policy Header, Content-Security-Policy Header