exists("{$allowed_directory}/{$file_path}")) { throw new NotFoundHttpException('檔案不存在'); } $real_path = realpath($full_path); $allowed_base_path = realpath(storage_path("app/{$allowed_directory}")); if (!$real_path || strpos($real_path, $allowed_base_path) !== 0) { throw new AccessDeniedHttpException('無權訪問該檔案'); } $mime_type = mime_content_type($full_path) ?: 'application/octet-stream'; return Response::file($full_path, [ 'Content-Type' => $mime_type, 'Content-Disposition' => 'inline; filename="' . basename($file_path) . '"', 'X-Frame-Options' => 'SAMEORIGIN', // Allow same-origin framing 'Content-Security-Policy' => "frame-ancestors 'self'", // Allow iframe on same domain ]); } }