Мне нужно разместить статический CSV-файл в моем приложении весенней загрузки, чтобы браузер мог загрузить его с сервера. Как указано в нескольких документах, Spring Boot по умолчанию обслуживает содержимое src/main/resources.
Я только что сохранил файл sample-user-creation.csv в папке src/main/resources. Кроме того, я не добавил ни одной строки кода, чтобы это работало.
Я пытаюсь загрузить файл с помощью запроса GET:
http://localhost:8080/sample-user-creation.csv
но это вообще не работает.
Я также попытался установить:
spring.mvc.static-path-pattern=/content/**
и попробовал использовать:
http://localhost:8080/content/sample-user-creation.csv
Это тоже не работает.
Я использую Spring Security, а также пытался явно установить requestMatchers для файла, чтобы разрешитьAll(), но это тоже не работает.
.authorizeHttpRequests((auth) -> auth
.requestMatchers(CorsUtils::isPreFlightRequest).permitAll()
.requestMatchers("/admin/**")
.hasRole("ADMIN")
.requestMatchers(HttpMethod.POST, "/public/login").permitAll()
.requestMatchers(HttpMethod.POST, "/public/register")
.permitAll()
.requestMatchers("/sample-user-creation.csv").permitAll()
.anyRequest().authenticated()
)
Почему это не работает для меня. Во всех документах говорится, что это поведение по умолчанию и работает без какой-либо настройки.
Я делаю что-то не так или мне нужно добавить какую-либо другую конфигурацию.
Добавляем еще несколько деталей:
@RomanC Я передаю токен авторизации в запрос, как и все другие мои вызовы REST (они работают нормально). Что касается минимального примера. Ожидается, что это сработает «из коробки», поместив файл в папку ресурсов. У меня нет другого кода, кроме того, который я вставил. Попробую поделиться подробностями.
Вы не можете получить доступ к статическим ресурсам с помощью токена. Вам следует использовать сеанс для хранения токена авторизации. Таким образом, вы получаете разрешение на доступ к статическим ресурсам без токена.
Я считаю, что, поскольку я явно добавил средство сопоставления запросов, чтобы разрешить этот путь, токен не будет никакой проблемой. не так ли?
Да, проблема в этом токене, удалите токен и добавьте сопоставитель, тогда он пройдет фильтр безопасности.




Spring не предоставляет статический контент из папки resources; он обслуживает его из папки с именем resources, или static, или public в пути к классам.
Внутри папки ресурсов поместите папку с именем static, public или resources. Любые файлы, помещенные в эту папку, будут использоваться как статический контент.
Итак, в вашем случае рассмотрите возможность добавления папки внутри /src/main/resources под названием static. Внутри статической папки добавьте свой файл sample-user-creation.csv. Запустите приложение, и вы сможете получить доступ к этому файлу в корне вашего приложения, http://localhost:8080/sample-user-creation.csv
Если у вас все еще установлен статический путь, например. spring.mvc.static-path-pattern=/content/**, он будет доступен по адресу http://localhost:8080/content/sample-user-creation.csv
Пожалуйста. Если вы подумаете об этом, вы не захотите, чтобы он открывал файлы из src/main/resources, он содержит ваши свойства, которые будут содержать конфигурацию, к которой вы не хотите, чтобы другие имели доступ.
Вы не можете получить доступ к статическим ресурсам без авторизации. Вы также не опубликовали ошибку с конкретным минимально воспроизводимым примером.