【发布时间】:2012-07-14 04:48:13
【问题描述】:
我们有一个旧版 (php) 应用程序,接受文件上传,它们存储在取决于会话 ID 的路径中。现在我们必须为这个 webapp 提供一个非常简单的 API,通过 iOS api (iPad) 执行文件上传。我们返回一个 url,客户将在嵌入式 webkit 窗口中打开它。
由于上传和查看操作的会话不同,我们想获取会话参数并在文件上传的响应中返回它。然后客户端被重定向到那个 url,我们将 session id 设置为之前的 id 并继续到客户可以继续工作的页面。
显然,我尝试过的任何方法都不起作用。我们使用 Zend Framework 1,但这并不重要。我试过了:
- 设置 Set-Cookie 标头(这会导致 cookie 包含两个 PHPSESSID 值)
- 使用
setcookie("PHPSESSID", $session, 3600)设置PHPSESSID - 使用带有
setHeader('Set-Cookie', 'PHPSESSID=....', true)的 Zend http 响应
最后两个选项什么都不做,就像我根本没有设置会话一样。我该如何解决这个问题?我们实际上不能过多地修改遗留代码库来修改其工作方式并更改文件上传的路径解析方式。
所以,流程是: 对 api.myapp.tld 的请求 -> 使用正文中的字符串进行响应 -> 使用此响应字符串作为位置打开 webkit 窗口 -> 执行请求 -> 带有重定向标头的响应 以及将 cookie 设置为某些内容的方法不同 -> Webkit 执行重定向 -> 客户访问的页面与对 api.myapp.tld 的第一个请求具有相同的会话 ID。
如果有其他方法可以设置会话 ID,那就太好了。
【问题讨论】:
标签: php zend-framework session-cookies