v147 · Demo 4 · Security

WebTransport LNA Tester

Enter any https:// WebTransport URL to classify its IP space (loopback / private / public) and trace the full LNA handshake flow. Then attempt a real connection and watch Chrome 147's permission checks in action.

WebTransport API checking…
Chrome version (LNA enforcement ≥ 147) checking…
Current page network tier checking…

URL Classifier & Connection Tester

Try examples or enter a custom WebTransport URL. Classification is done locally — no network request needed.

Handshake Flow

Classify a URL to see the LNA handshake steps.

Connection Attempt

Attempt new WebTransport(url) and trace the result. Connection to local addresses requires LNA opt-in from the server.

Awaiting URL classification…

If your WebTransport server lives on a private or loopback address and is accessed from a public page, it must respond to the LNA preflight with the following HTTP/3 headers:

// Required response headers on the WebTransport server:
Access-Control-Allow-Origin: https://your-public-site.example
Access-Control-Allow-Private-Network: true

Node.js server example (node-webtransport):

import { WebTransportServer } from '@fails-components/webtransport';

const server = new WebTransportServer({
  port: 4433,
  cert: fs.readFileSync('cert.pem'),
  privKey: fs.readFileSync('key.pem'),
});

server.on('session', (session) => {
  // Set LNA opt-in headers on the session response
  session.responseHeaders.set(
    'Access-Control-Allow-Private-Network', 'true'
  );
  session.responseHeaders.set(
    'Access-Control-Allow-Origin',
    'https://your-public-site.example'
  );
  session.accept();

  session.on('stream', (stream) => {
    // handle bidirectional streams
  });
});

Note: The preflight for WebTransport uses QUIC (not HTTP/1.1 OPTIONS like CORS). The server must set these headers on its QUIC handshake response, not on a separate preflight endpoint.

references

implementation reference

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