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