ファイルのアップロードを受け入れるレガシー(php)アプリケーションがあり、それらはセッションIDに応じたパスに保存されます。ここで、この Web アプリケーションに非常に単純な API を提供する必要がありました。この API では、iOS API (iPad) を介してファイルのアップロードが実行されます。お客様が埋め込まれた Webkit ウィンドウで開く URL を返します。
アップロード アクションとビュー アクションからのセッションは異なるため、セッション パラメーターを取得して、ファイル アップロードからの応答でそれを返すことを考えました。その後、クライアントはその URL にリダイレクトされます。セッション ID を以前の ID に設定し、顧客が作業を続行できるページに進みます。
どうやら、私が試したものは何も機能しません。Zend Framework 1 を使用していますが、それはあまり重要ではありません。私は試した:
- Set-Cookie ヘッダーの設定 (これにより、2 つの PHPSESSID 値を含む Cookie が生成されます)
- a を使用し
setcookie("PHPSESSID", $session, 3600)
て PHPSESSID を設定します - Zend http レスポンスを
setHeader('Set-Cookie', 'PHPSESSID=....', true)
セッションをまったく設定しなかったように、最後の 2 つのオプションは何もしません。どうすればこれを解決できますか? 実際には、従来のコード ベースにそれほど手を加えて、その動作を変更したり、ファイル アップロードのパス解決の動作を変更したりすることはできません。
したがって、フローは次のとおりです。 cookie を別のものに送信 -> Webkit がリダイレクトを実行 -> 顧客は、api.myapp.tld への最初のリクエストと同じセッション ID を持つページにアクセスします。
セッション ID を設定する別の方法があれば、それは素晴らしいことです。