v147 · Security · WebTransport

Compatibility Lab

Detects WebTransport availability and classifies page origin context. Shows which WebTransport connection targets require LNA opt-in headers. Provides the server-side HTTP/3 SETTINGS parameter pattern for granting private network access to WebTransport sessions.

API probes

WebTransport LNA enforcement matrix

Page originWebTransport targetChrome 147 result
Public (https://example.com)https://localhost:4433BLOCKED — LNA opt-in required
Public (https://example.com)https://192.168.1.x:4433BLOCKED — LNA opt-in required
Private originhttps://192.168.1.x:4433ALLOWED — same network tier
Public (https://example.com)https://api.example.comALLOWED — public to public

Live context probe

WebTransport API + LNA context check
Click "Run probe" to inspect WebTransport context…

Server-side opt-in pattern

/* WebTransport LNA opt-in (server-side) */ /* WebTransport uses HTTP/3 (QUIC). The LNA opt-in is conveyed via an HTTP/3 SETTINGS parameter, NOT an HTTP OPTIONS preflight. The server must send the HTTP/3 SETTINGS frame with: SETTINGS_PRIVATE_NETWORK_ACCESS_PERMISSION = 1 In aioquic (Python): config = QuicConfiguration(is_client=False) config.settings = {'private_network_access_permission': 1} In Go (quic-go): settings := &webtransport.Settings{ EnablePrivateNetworkAccess: true, } */ /* Client — feature detect and connect */ async function connectPrivateWebTransport(url) { if (!('WebTransport' in window)) { throw new Error('WebTransport not available'); } try { const transport = new WebTransport(url); await transport.ready; return transport; } catch (e) { // LNA block → "Failed to connect to server" or similar if (e.message.includes('private network') || e.message.includes('blocked')) { throw new Error('LNA block: server needs SETTINGS_PRIVATE_NETWORK_ACCESS_PERMISSION'); } throw e; } } /* Detect if WebTransport is available */ const HAS_WT = 'WebTransport' in window; console.log('WebTransport:', HAS_WT);

references

implementation reference

Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗