【问题标题】:CORS dosent work when GET request is encoded对 GET 请求进行编码时,CORS 不起作用
【发布时间】:2019-07-28 08:37:11
【问题描述】:

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

一个是 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 文件管理器对于“C/C++”之类的单词失败,但适用于“C++”。它说“不 响应中出现“访问控制允许来源” 但是在我的 Java 服务器中,我有

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

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

【问题讨论】:

    标签: angularjs spring-boot security cors


    【解决方案1】:

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

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

    【讨论】:

    • 哇,非常感谢。我差点忘了您可以通过 search/USA 或 search?country=USA 拨打电话。我现在无法测试它,但我很确定这会奏效!非常感谢
    • 如果还有其他问题,我会回到这个问题,当然接受你的答案是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 2015-07-09
    相关资源
    最近更新 更多