问题描述
我正在使用 WSO2IS 的 PDP 端点,预检请求的响应在 Access-Control-Allow-Origin 标头中包含多个值,这在浏览器中造成了问题:
我的 web.xml 配置如下所示:
<filter>
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<init-param>
<param-name>cors.allowOrigin</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.supportedMethods</param-name>
<param-value>GET,HEAD,POST,DELETE,OPTIONS,PATCH,PUT</param-value>
</init-param>
<init-param>
<param-name>cors.exposedHeaders</param-name>
<param-value>Access-Control-Allow-Origin,Location</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
控制台中的确切日志:
从源“http://localhost:8000”访问“https://{base-url}:9443/api/identity/entitlement/decision/pdp”的 XMLHttpRequest 已被 CORS 策略阻止:响应预检请求未通过访问控制检查:'Access-Control-Allow-Origin' 标头包含多个值 '*,http://localhost:8000',但只允许一个。
我尝试了以下链接中提供的建议:https://github.com/wso2/identity-apps#run-in-dev-mode
此配置有什么问题,或者我是否需要更改其他配置才能使其正常工作?
解决方法
如果您尝试使用 IS 5.11 版,则必须将 [1] 中给出的此配置应用于 deploymet.toml 文件。从 5.11 开始,我们使用新的 cors 配置模型 [2]。所以[1] 仅适用于 IS5.11.0 以后。因此,应用文档 [1] 中给出的配置不适用于以前的版本。
由于您使用的是 IS5.10.0(如果它不是 5.10.0 wum 更新包),请将以下配置添加到位于
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<init-param>
<param-name>cors.allowOrigin</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.exposedHeaders</param-name>
<param-value>Location</param-value>
</init-param>
<init-param>
<param-name>cors.supportedMethods</param-name>
<param-value>GET,HEAD,POST,DELETE,OPTIONS,PATCH,PUT</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
如果您使用的是 5.10.0 wum 包,那么您需要将配置添加到 deployment.toml 文件中。参考git issue[3]
[1]https://github.com/wso2/identity-apps#run-in-dev-mode
[2]https://wso2.com/blogs/thesource/cors-with-wso2-identity-server-5.11/