对 GET 请求进行编码时,CORS 不起作用
Posted
技术标签:
【中文标题】对 GET 请求进行编码时,CORS 不起作用【英文标题】:CORS dosent work when GET request is encoded 【发布时间】: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 都可以正常工作。
【问题讨论】:
【参考方案1】:您不应该对 url 部分进行编码...您必须将 queryString 转换为请求参数(并对其进行编码)
$API_URL/client/search?query=$encodedQueryString
【讨论】:
哇,非常感谢。我差点忘了您可以通过 search/USA 或 search?country=USA 拨打电话。我现在无法测试它,但我很确定这会奏效!非常感谢 如果还有其他问题,我会回到这个问题,当然接受你的答案是正确的。以上是关于对 GET 请求进行编码时,CORS 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
CORS 超薄框架。对 apache 的 Angular 请求不起作用