【问题标题】:APIGEE - Cookies IssueAPIGEE - Cookie 问题
【发布时间】:2014-04-02 17:56:03
【问题描述】:

Cookie 支持 - 问题?

原始问题/背景:

我们在 Openshift 中运行基于 servlet/JSON 的 API,openshift 中使用的 Web 服务器是 Tomcat。

我们将信息存储到 httpsession,当直接用于 openshift / tomcat (POST / GET) 时一切正常。但是,当我们针对现有方法配置 apigee 时,会话就会丢失。东西正确存储在服务器端的会话中,但是当第二个请求来自 apigee 进入 tomcat 时,会话“丢失”

获取会话的一段 java 代码是普通的 httpsession.getRequest()。如前所述,直接使用后端时效果很好。当通过 apigee 使用请求时,是否需要一些额外的步骤(cookie 等)来维护会话?

更新调查结果;

通过简短的调试流量监控,确认apigee中错误的原因是它没有将JSessionId传递给请求。这意味着应该在 API 代理设置/配置中以某种方式启用 cookie 支持。

有人知道在哪里或是否可以解决这个问题吗?

【问题讨论】:

    标签: session apigee


    【解决方案1】:

    首先,cookie 不是适当的 RESTful 有效负载的一部分——如果您获取标头,则可以将它们与 access_token 一起存储,作为生成令牌策略的一部分。

    除此之外,您应该能够将 cookie 传回请求应用程序,然后让应用程序将它们传回 API —— 我的 jackindex API 可以让您这样做。

    确保您在流程中没有任何意外删除标头的 AssignMessage 策略 - 如下所示:

    <Set>
      <Headers />
    </Set>
    

    因为这将删除所有标题。此外,您可以查看 Apigee 中的 Trace 工具,以检查沿途的每个策略步骤,以查看您是否从请求负载中剥离 Cookie: 标头。

    【讨论】:

      【解决方案2】:

      如果您的资源位于地址“http://yourdomain.com/somewhere/”上,并且您从 apigee API 重定向到该资源,例如通过 url:http://yourapi.apigee.net/v0/myresource”,您从服务器返回的是 /somewhere/ 而不是 v0 的 cookie /resource/somewhere,所以基本上当浏览器取回 cookie 时,它​​不会把它放到正确的位置并丢弃它。至少我的情况是这样。

      【讨论】:

        【解决方案3】:

        你应该 ping @bissell 关于这个,但我确实发现这篇文章可能会有所帮助: http://community.apigee.com/groups/learn-create-and-manage-apis/some-basic-questions-new

        此外,您可以通过向捕获 JSessionId 的请求添加“提取变量”策略,然后添加“分配消息”策略以将其添加回请求来解决您的问题。

        您可以从 API Platform>Dashboard>API Proxies>YOUR API>Develop 分配策略

        【讨论】:

          猜你喜欢
          • 2014-07-18
          • 2013-12-14
          • 1970-01-01
          • 1970-01-01
          • 2010-10-29
          • 2020-11-09
          • 2011-10-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多