У меня есть загрузочное приложение Spring, которое предоставляет некоторые конечные точки REST.
Одним из них является конечная точка запросов GET: «APIURL/client/search/{keyword}». Он отфильтровывает из всех существующих клиентов в БД тех, у кого есть это слово в их имени-описании-стране и т. д.
Приложение для фронтенда использует NodeJS и PrimeReact. Он вызовет этот поисковый API с
search = (filter) => {
const queryString = filter;
if (queryString) {
fetch(`${API_URL}/client/search/${queryString}`)
Я обнаружил небольшую ошибку: если я ищу по слову, содержащему "/", это не удастся, потому что вызов попытается "искать/слово/послеслэш" и ответит "404 не найдено". Сейчас я закодирую слово
let encodedQuery = encodeURIcomponent(query);
Теперь любое специальное слово кодируется, НО файл CORS не работает для таких слов, как «C/C++», но работает для «C++». Там написано "Нет "Access-Control-Allow-Origin" присутствует в ответе" НО на моем Java-сервере у меня есть
response.setHeader("Access-Control-Allow-Origin", "*");
И любой другой API работает отлично.


Вы не должны кодировать части URL... вам нужно преобразовать queryString в параметр запроса (и закодировать его)
${API_URL}/client/search?query=${encodedQueryString}
Я вернусь к этому вопросу, если возникнут какие-либо проблемы и, конечно же, приму ваш ответ как правильный.
Вау, большое спасибо. Чуть не забыл, что звонить можно либо по поиску/США, либо по поиску?страна=США. Я не могу проверить это прямо сейчас, но я очень уверен, что это сработает! Большое спасибо