我有一个Spring启动应用程序,它提供了一些REST端点。
一个是GET请求端点:“APIURL / client / search / {keyword}”。它从DB中的所有现有客户端过滤那些在其名称 - 描述 - 国家/地区等中具有该单词的客户。
前端部分的应用程序使用NodeJS和PrimeReact。它将调用该搜索API
search = (filter) => {
const queryString = filter;
if (queryString) {
fetch(`${API_URL}/client/search/${queryString}`)
我发现了一个小错误:如果我用含有“/”的单词搜索它会失败,因为调用将尝试“search / word / afterSlash”并响应“404 Not Found”。现在我将编码这个词
let encodedQuery = encodeURIcomponent(query);
现在任何特殊的单词都被编码但是CORS文件管理器对于像“C / C ++”这样的单词失败了,但适用于“C ++”。它说响应中出现“No”Access-Control-Allow-Origin“但是我的Java服务器中有
response.setHeader("Access-Control-Allow-Origin", "*");
任何其他API都可以正常工作。
你不应该编码url部分...你必须将queryString转换为请求参数(并对其进行编码)
${API_URL}/client/search?query=${encodedQueryString}