HTTP Permissions-Policy serial

Typ

Die serial-Direktive steuert den Zugriff auf die Web Serial API zur Kommunikation über serielle Schnittstellen.

Syntax

Die Direktive definiert eine Allowlist für Ursprünge, die Serial-Port-Zugriff erhalten dürfen.

http
Permissions-Policy: serial=(self)
Permissions-Policy: serial=(self "https://arduino-ide.cloud.com")
Permissions-Policy: serial=()

Direktiven

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

self
Erlaubt Serial-Zugriff 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://editor.hardware-tools.example.com", die zusätzlich zum Hauptdokument Serial-Zugriff erhalten. Für Hardware-Development-Tools.

Beispiele

Die folgenden Beispiele zeigen typische Anwendungsfälle für Arduino-IDEs, Hardware-Tools und IoT-Development.

Cloud-Arduino-IDE mit Serial-Monitor

Eine Cloud-basierte Arduino-IDE nutzt Web Serial API für direkten Mikrocontroller-Zugriff.

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

<!DOCTYPE html>
<html>
<head><title>Arduino Cloud IDE</title></head>
<body>
  <button id="connect">Connect to Arduino</button>
  <pre id="serial-output"></pre>
  <script>
    document.getElementById('connect').addEventListener('click', async () => {
      const port = await navigator.serial.requestPort();
      await port.open({baudRate: 9600});
      const reader = port.readable.getReader();
      while (true) {
        const {value, done} = await reader.read();
        if (done) break;
        document.getElementById('serial-output').textContent += new TextDecoder().decode(value);
      }
    });
  </script>
</body>
</html>

IoT-Platform mit Hardware-Configuration-Widget

Eine IoT-Plattform erlaubt einem Configuration-Tool Serial-Zugriff für Device-Setup.

http
HTTP/1.1 200 OK
Content-Type: text/html
Permissions-Policy: serial=(self "https://config.iot-platform.example.com")

<!DOCTYPE html>
<html>
<head><title>IoT Dashboard</title></head>
<body>
  <iframe src="https://config.iot-platform.example.com/device-setup"
          allow="serial"></iframe>
</body>
</html>

REST-API ohne Serial-Support

Ein API-Endpunkt deaktiviert alle Hardware-Port-APIs.

http
HTTP/1.1 200 OK
Content-Type: application/json
Permissions-Policy: serial=(), usb=(), bluetooth=(), hid=()

{
  "status": "success",
  "devices": []
}

Vorteile für die Systemarchitektur

  • Ermöglicht Browser-basierte Hardware-Development-Tools ohne Treiber
  • Verhindert unautorisierten Serial-Port-Zugriff durch Drittanbieter
  • Unterstützt direkte Kommunikation mit Mikrocontrollern und IoT-Devices
  • Reduziert Sicherheitsrisiken durch Policy-basierte Serial-Kontrolle

Spezifikation

Definiert in der WICG Web Serial API Spezifikation. Chromium-basierte Browser. Erfordert HTTPS und explizite Nutzer-Permission per Port-Picker-Dialog.

Weitere Spezifikationen

Permissions-Policy Header, Content-Security-Policy Header