【问题标题】:How to handle CORS preflight requests in a SiteMinder protected environment?如何在 SiteMinder 受保护的环境中处理 CORS 预检请求?
【发布时间】: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 预检请求有任何想法吗?提前非常感谢!

【问题讨论】:

    标签: angularjs authentication cors siteminder preflight


    【解决方案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”标头。产地
    猜你喜欢
    • 2014-10-31
    • 2016-02-17
    • 2013-11-25
    • 2014-05-23
    • 2014-08-16
    • 1970-01-01
    • 2018-11-12
    • 2014-03-14
    • 2021-05-11
    相关资源
    最近更新 更多