私の Web アプリが、自分の資格情報をアプリに提供するユーザーに代わって動作しているとします。これにより、アプリはサード パーティ サービスへの API 呼び出しを行うことができます。ちなみに、これはこのサードパーティのサイト (eBay に少し似ていますが、規模は小さい) に製品のオファーを投稿するためのものです。
この投稿を簡単にする非常に便利な方法の 1 つは、サードパーティ サービスが認証済みユーザー向けの製品オファーを受け入れる必要がある洗練された Web フォームを再利用することです。Web フォームに入力し、クライアント ブラウザーをリダイレクトして、ユーザーが洗練された使い慣れた Web フォームを使用して編集できるようにするという考え方です。これは最高のユーザー エクスペリエンスであり、実装作業は最小限ですみます。
ただし、文書化された方法ではありません。さらに、リクエスト パラメータ (GET または POST) からフォーム フィールドに入力するような単純な方法では機能しません。Webフォームはそのようには機能しません。
代替案があるかもしれません。私のアプリは、ユーザーに代わってサードパーティのアプリとのセッションを開き、すべてのデータを送信してデータベースに保存し、ユーザーのブラウザーに、サーバー アプリが開いたセッションを引き継ぐために必要なすべてのデータを送信できます。代理。これはまだ試していないことに注意してください。また、サードパーティのアプリがセッションを IP 番号に関連付けると、失敗する可能性があると思います (これは、健全かどうかに関係なく、アプリが行う可能性があります)。
しかし、HTTP セッションを開くサーバー プログラムに、そのセッションを引き継ぐために必要なすべての情報を HTML/Javascript ドキュメントに書き込み、そのドキュメントをユーザーのブラウザに送信させることはできないでしょうか。 HttpFox を使用して観察してきた、サードパーティのフォームでブラウザを直接使用したときに構成されたように?
すべての情報、つまりすべてが HTTP です。サーバーのIP番号をクライアントに渡すことは明らかに不可能です...しかし、すべてのCookieとパラメーター. ブラウザで実行されている Javascript は、サーバー アプリが開いたセッションに直接入るサード パーティの Web サイトへの要求を作成するために、何らかの方法でドキュメント (おそらくスクリプト部分) に渡す情報を使用する必要があります。 . これは、私のドメインから発信されたドキュメントが Cookie を設定 (リクエスト ヘッダーを追加) し、ユーザーのブラウザにそのリクエストを実行させることを意味します。
つまり、サーバーからクライアントにセッションを渡すことは技術的に可能ですか?
Javascriptでどのようにしますか?
アップデート
別の質問への回答によると、別のドメインに Cookie を設定することはできません。これを許可すると、重大なセキュリティ上の欠陥が発生します。私がフロントエンド開発者ではないことを示します。
まだ、あきらめていません。そこにXmlHttpRequest
オブジェクトがあります。たぶん、これは私の邪悪な目的のために悪用される可能性がありますか?
2 回目の更新
ということで実験してみましXmlHttpRequest
た。悪いニュース (私とこの特定のケースにとって): どちらを使用しても機能しないようです (現在の Firefox を使用して) 私の巧妙に偽造されたリクエストが、クロスオリジン リソースXmlHttpRequest
の W3C 標準になる予定のものに従って書き直されているためです。共有しているため、Cookie
ヘッダーは単純に削除され、ダミーのヘッダーはMoin
にGurke
縮小されAccess-Control-Request-Headers: gurke,moin
ます。率直に言って、これはゲームを大きく台無しにしています。がっかりだよ。