编码GET请求时,CORS正常工作

时间:2019-03-06 15:53:51

标签: angularjs spring-boot security cors

我有一个Spring Boot应用程序,提供了一些REST端点。

一个是GET请求端点:“ APIURL / client / search / {keyword}”。它会从数据库中所有现有的客户端中过滤那些在其名称-描述-国家等中包含该单词的用户。

前端部分的应用程序正在使用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 filer对于“ C / C ++”之类的单词失败,但对“ C ++”有效。它说:“不   响应中出现“访问控制允许来源” 但是我的Java服务器中有

  response.setHeader("Access-Control-Allow-Origin", "*");

其他任何API都可以正常工作。

1 个答案:

答案 0 :(得分:1)

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

${API_URL}/client/search?query=${encodedQueryString}