如何在 SiteMinder 受保护的环境中处理 CORS 预检请求?
Posted
技术标签:
【中文标题】如何在 SiteMinder 受保护的环境中处理 CORS 预检请求?【英文标题】:How to handle CORS preflight requests in a SiteMinder protected environment? 【发布时间】:2015-04-09 16:16:17 【问题描述】:我正在构建一个 AngularJS 应用程序,它将与运行在不同主机上的 RESTful 服务进行交互。由于请求是跨来源的,CORS 正在参与其中。由于请求将 JSON 指定为预期的内容类型,因此 CORS 预检 请求由浏览器触发。到目前为止很简单。
根据 W3 规范,CORS 预检请求应排除用户凭据。 RESTful Web 服务应用程序受 SiteMinder 的保护,它被配置为基于 URL 执行身份验证。 Web 服务仅依靠 SiteMinder 进行身份验证和处理授权。这就是无法删除 SiteMinder 的原因。因此,CORS 预检请求返回 需要 HTTP 401 授权。它会阻止浏览器继续执行实际请求。
关于如何在 SiteMinder 受保护的环境中启用 CORS 预检请求有任何想法吗?提前非常感谢!
【问题讨论】:
【参考方案1】:您可以尝试通过在代理的 ACO 参数中设置 autoauthorizeoptions = yes 来忽略 OPTIONS 方法
++++++++++++++++++++++++++++++ 允许自动访问使用 OPTIONS 方法的资源 SiteMinder Web 代理仍会质询尝试访问使用 OPTIONS 方法的资源的经过身份验证的用户。使用 OPTIONS 方法的一些资源示例包括(但不一定限于)以下内容:
Microsoft® Word 文档 Microsoft® Excel® 电子表格文档 发生此挑战的原因是与资源关联的应用程序使用 OPTIONS 方法向 Web 服务器发送请求。由于此请求不包含 SiteMinder cookie,因此 Web 代理会发出质询。
为了防止用户被挑战这些资源
将以下参数的值设置为yes: 自动授权选项 自动授权对使用 HTTP OPTIONS 方法的资源的任何请求。
如果您将此参数的值设置为yes,请将PersistentCookies 参数的值也设置为no。
限制:是,否
将 PersistentCookies 参数的值设置为 no。
++++++++++++++++++++++++++
【讨论】:
我有你提到的配置,但我仍然收到 CORS 错误。预检请求未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。产地以上是关于如何在 SiteMinder 受保护的环境中处理 CORS 预检请求?的主要内容,如果未能解决你的问题,请参考以下文章
来自 SIteminder 的每个请求的 SM_USER(以及静态请求)
Grails、Spring Security 和 Siteminder - 资源或用户详情问题
如何通过 Wordpress REST API 对 LearnDash 中受保护数据的远程访问进行身份验证?
System.AccessViolationException”类型的未经处理的异常在 System.Data.dll 中发生。其它信息:尝试读取或写入受保护的内存。这通常指示其它内存已损坏。(代码片