origin property

String get origin

Gets origin (for CORS).

Implementation

String get origin {
  // Prefer explicit Origin header when present (browser CORS requests)
  final headerOrigin = _raw.headers.value('origin');
  if (headerOrigin != null && headerOrigin.isNotEmpty) return headerOrigin;

  // Use requestedUri origin when URI contains scheme and host
  final requested = _raw.requestedUri;
  if (requested.hasScheme && requested.host.isNotEmpty) {
    try {
      return requested.origin;
    } catch (_) {
      // ignore and fallthrough to header-based fallback
    }
  }

  // Fallback: infer from common proxy headers or host header
  final proto = _raw.headers.value('x-forwarded-proto') ?? 'http';
  final host = _raw.headers.value('host') ?? requested.host;
  if (host.isNotEmpty) return '$proto://$host';

  return requested.origin;
}