Можно ли настроить Apache, чтобы JS в браузере мог получать содержимое каталога сервера?

Если у меня был каталог изображений в моем каталоге Apache DocumentRoot, и я хочу, чтобы JavaScript на моем веб-сайте знал, какие изображения доступны в этом каталоге, как я вижу, есть два варианта:

  1. Предоставьте список этих изображений из серверного скрипта, который может проверить каталог и вернуть список элементов внутри.
  2. Создайте файл (например, "contents.js") в этом каталоге, используя скрипт / исполняемый код на сервере. В этом файле будут перечислены файлы, содержащиеся в каталоге, и JS на внешнем интерфейсе сможет получить доступ к этому файлу.

Однако возможно ли настроить Apache для предоставления доступа к этому каталогу таким образом, чтобы JS мог сделать запрос к серверу на содержимое каталога? Возможно, используя mod_autoindex или что-то более аккуратное? Кто-нибудь делал это?

На самом деле я не хочу использовать это для изображений, так что это всего лишь гипотетический пример.

Спасибо

1 ответ

Решение

Javascript может общаться с сервером только через HTTP. Там нет секретных бэкдор или что-нибудь, чтобы "получить содержимое каталога". Apache должен будет предоставить некоторый документ, который Javascript может интерпретировать, чтобы сообщить, какие файлы находятся в каталоге.

Вы можете настроить Apache для обслуживания списков каталогов, однако это, как правило, HTML-страницы, которые вам нужно будет проанализировать в Javascript для извлечения информации. Не невозможно, но, конечно, не элегантно. Кроме того, эти списки каталогов будут видны и доступны любому публично по необходимости (ну, любое решение будет раскрывать эту информацию публично, и нет никакого способа обойти это).

Javascript может работать намного проще с данными JSON или, возможно, с данными XML. Я не знаю ни одного мода Apache, который выводит списки каталогов в формате JSON. Поэтому наличие конечной точки REST на стороне сервера, обслуживающей настроенный JSON (или просто статический файл.json, который вы обновляете по мере необходимости), является гораздо более элегантным решением с точки зрения файла Javascript, пытающегося получить эти данные.

Другие вопросы по тегам