Стабильный URL

File managerCommunity Edition+

Файлы, управляемые хранилищем NocoBase, доступны через стабильный URL. NocoBase проверяет запись файла и права доступа, а затем перенаправляет запрос на фактический URL, созданный хранилищем.

Формат

/files/<app>/<dataSource>/<collection>/<id><extname>

При APP_PUBLIC_PATH=/nocobase путь начинается с /nocobase/files/. ID и расширение нельзя изменить после создания, поэтому URL остаётся стабильным, пока существует запись.

НазначениеURLПоведение
Открытие/files/.../42.pdfПроверяет права и перенаправляет к файлу
Предпросмотр/files/.../42.png?preview=1Перенаправляет к миниатюре или версии для просмотра
Скачивание/files/.../42.pdf?download=1Перенаправляет с режимом скачивания
Office/files/.../42.xlsx?temporaryAccessToken=...Временный доступ для Office Online Viewer

Поведение в NocoBase

  • Поля вложений, таблицы файлов и HTTP API возвращают стабильные значения url и preview
  • Markdown сохраняет стабильный URL и поддерживает закрытые S3, OSS, COS и S3 Pro
  • Поле URL вложения сохраняет введённые вручную внешние URL, а для управляемых файлов использует стабильный URL
  • Обычный предпросмотр использует текущую сессию и права NocoBase
  • Публичная форма даёт ограниченный доступ только к файлам, загруженным в текущей сессии формы

Предпросмотр Office

Microsoft Office Online Viewer не может использовать cookie пользователя NocoBase. При открытии NocoBase сначала проверяет право просмотра, а затем выдаёт временный URL, привязанный к файлу. По умолчанию он действует 10 минут; параметр TEMPORARY_FILE_ACCESS_EXPIRES_IN допускает значение от 5 до 10 минут.

Не сохраняйте временный URL в полях, Markdown или бизнес-данных и не используйте его как ссылку общего доступа.

Важные замечания

  • Стабильный не означает публичный; получателю всё равно нужны права
  • Удаление или перенос записи делает старый URL недействительным
  • Ответ представляет собой перенаправление 302, которому должен следовать клиент
  • Не сохраняйте 302 Location и temporaryAccessToken
  • Обратный прокси должен передавать маршрут /files/ в пределах APP_PUBLIC_PATH в NocoBase. При развёртывании в подпути также сохраните совместимый корневой маршрут /files/. Конфигурации, созданные NocoBase CLI, автоматически включают оба правила
  • В развёртываниях, где страницы обращаются к API между разными origin (API_BASE_URL указывает на другой origin), origin страницы нужно добавить в CORS_ORIGIN_WHITELIST. Иначе cookie входа не будет сохранена, а stable URL вернёт 403 из-за отсутствия учётных данных. См. Переменные окружения
  • Используйте отдельный hostname для каждого независимого сервиса NocoBase, а не различайте сервисы только по порту. Cookies браузера не изолируются по портам; см. Развёртывание в рабочей среде
  • Подприложения в одном развёртывании NocoBase различаются по имени приложения и не требуют отдельных hostnames. Однако независимый сервис на другом порту всё равно должен быть изолирован по hostname, если он содержит основное или дочернее приложение с тем же именем

Связанные ссылки