ECサイトで働いています。私たちが行っていることの一部は、一部のクライアントにカスタマイズされたアイテムを提供することです. 最近、非技術系の管理者が、そのようなクライアントの Web サイトにチェックアウト プロセスを組み込むことができると約束しました。これを行う方法を見つけた唯一の方法は、iframe を使用することです (わかっていますが、私も好きではありません)。問題は、表示するカスタム アイテムを決定するために Cookie を使用しているため、このサイトのほとんどの顧客がチェックアウトできないことです。ブラウザは私たちの Cookie をサード パーティとして認識しており、ほとんどの人がサード パーティの Cookie を無効にしています。答えが「はい」の場合、私はショックを受けるでしょうが、これに対する回避策はありますか? つまり、私たちの iframe をホストしているサイトは、必要な Cookie を何らかの方法で提供できますか?
5 に答える
非表示のインタースティシャル ページを試してください。
基本的に、ホスティング サイトはドメイン内のサイトへのリダイレクトを発行し、その後は自由に Cookie を設定できます (この時点では、実際には がファースト パーティであるため)。その後、サイトはすぐにホスティング サイトにリダイレクトされます。この時点で、新しく作成された Cookie はホスティング サイトには表示されませんが、iFramed ページには表示されます。
残念ながら、ホスティング サイトは Cookie が更新されるたびにこれを行う必要がありますが、二重リダイレクトはすぐに発生する可能性があり、ほとんど気付かないでしょう。お使いのシステムで、Cookie を 1 回だけ設定する必要があることを願っています。
答えが「はい」の場合、私はショックを受けるでしょうが、これに対する回避策はありますか? つまり、iframe をホストしているサイトは、必要な Cookie を何らかの方法で提供できますか?
このシナリオではサード パーティである iframe ページ自体が、P3P Cookie ポリシー ヘッダーを送信する可能性があります。一部のブラウザはデフォルトでサード パーティの Cookie を受け入れますが、他のブラウザ (主に Safari) は、そうでない場合はまったく同意しません。ユーザーがデフォルト設定を自分で操作することによって。
また、Cookie だけでなく、GET または POST パラメータとしてセッション ID を渡すこともできます。PHP では、セッション オプションを設定することで、これを非常に簡単に行うことができます。セッション スチールのリスクがわずかに増加するだけの価値があるかどうかを検討する必要があります。
インタースティシャル ページ ソリューションは機能するはずですが、ホスティング サイトにとってはかなりの問題になる可能性があるため、Cookie を使用せずに作業できる別のソリューションを次に示します。
BeginRequest イベントに応答し、クエリ文字列を読み取り、対応する Cookie ヘッダーを Context.HttpRequest オブジェクトに挿入する HttpModule を記述します (注: AddCookie は使用できません。モジュールによって追加された Cookie は直接破棄されるため、AddHeader を使用する必要があります)。彼らがあなたのアプリケーションに適切にヒットする前に)。そうすれば、ホスティング サイトはクエリ文字列に必要な値を含むリクエストを (iFrame 内で) 単純に発行でき、モジュールはそれを Cookie (ネットワーク上ではなくメモリ内にのみ存在する) に変換し、アプリケーションは次のようになります。そこにクッキーがあると騙された。コードを変更する必要はありません。web.config にモジュールを追加するだけです。
これは、統合パイプライン モードで IIS 7.0 以降を使用している場合にのみ機能します。以前のバージョンの IIS を使用している場合、またはクラシック モードで実行する必要がある場合は、代わりに ISAPI フィルターが必要になります。