编码GET请求时,CORS不起作用

问题描述 投票:-1回答:1

我有一个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都可以正常工作。

angularjs spring-boot security cors
1个回答
1
投票

你不应该编码url部分...你必须将queryString转换为请求参数(并对其进行编码)

${API_URL}/client/search?query=${encodedQueryString}
© www.soinside.com 2019 - 2024. All rights reserved.