首页 > 解决方案 > 如何使用 WSO2 API Manager 2.6.0 分析和修复由于 CORS 和 Chrome 导致的随机故障

问题描述

在 API Publisher 中创建 URL 模式时,我创建了 GET 方法/something/v2%2E0 - 如您所见,我使用编码 %2E 而不是点 2.0。

在测试它时,我注意到该方法在我使用 FF 时有效,但在 Chrome 上无效,并显示以下错误消息:
Access to fetch at ' https://something:port/context/v1.0/something/v2.0 ?limit=1 ' from origin 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。

我检查了两个浏览器中的标题并注意到以下差异:在响应标题中 FF 有“接受:* / *”而 Chrome 没有。

更改 CORS 配置没有帮助。目前我的 CORS conf 如下所示:
启用基于 API 的 CORS 配置:
访问控制允许来源:是 - 所有允许来源
访问控制允许标头:授权、访问控制允许来源、内容类型、SOAPAction、授权
访问控制允许方法: GET、OPTIONS

我安装并启用了启用 Allow-Control-Allow-Origin: * 的 Chrome 插件,但它仍然无法正常工作。

有趣的是,该方法仅在我添加额外的 GET 方法/something/v2.0时才开始工作。当 API 发布者中存在这个新方法时,/something/v2%2E0开始工作,我在 Chrome 标头中得到“Accept: * / *”。如果我删除/something/v2.0/something/v2%2E0不会获取数据。

任何提示和提示表示赞赏:)

根据评论中的要求添加 OPTIONS 标头(请求和响应)。

要求

在此处输入图像描述

标签: corswso2wso2-am

解决方案


推荐阅读