3

過去数日間、これと他の多くのリンクを読みました。

問題は、ユーザーが mysite.com で開いたタブまたはブラウザーごとに一意の識別子が必要なことです (サイト名の例)。

mysite.com を開いてセッションで「ニンジン」を選択すると、mysite.com の他のすべてのタブ/ブラウザの特定のセッション値に「ニンジン」が含まれるようになるため、固有のセッションを使用できません。

ただし、サーバーは明らかに各ブラウザー/タブを一意に識別します。この一意のブラウザ/タブ ID を取得する方法、または一意の ID を作成する方法はありますか?

JavaScript を使用して独自の ID を生成することについて言及しているわけではありません。StackOverflow でいくつかの良い例を見ました。問題は、それを各マスター ページに実装し、マスター ページと非マスター ページの間で持ち運ぶ必要があることです。また、たとえば、私の例では、ブラウザーを開くことができるため機能しません。ポート間で値を転送できない場合など、いくつかのページで 20 回実行すると、20 の異なる ID が生成されます。

皆さんの時間を無駄にしないようにしてください。これはランダムな GUID 作成の質問ではありません。この質問は、できればサーバーへのリンクによって識別される、各タブ/ブラウザーの一意の再作成可能な ID の取得 (失われた場合) に関するものです。

4

1 に答える 1

5

これはあなたが触れた大きなトピックです。フォームの送信中に ID のみを保持する必要がある場合は、クライアント側のwindow.nameプロパティのアプローチを採用し、 を使用window.onloadしてその値で非表示フィールドを伝播できます。ただし、ユーザーがハイパーリンクをたどっている (サイトのリンクをクリックしている) 場合、これは機能しません。onload:window.nameが設定されているかどうかを確認します。設定されていない場合は、GUID を割り当てます。設定されている場合は、隠しフィールド = を設定しますwindow.namewindow.nameしたがって、送信時に、フォームにはGUIDの非表示フィールドが含まれます。

すべての問題を解決するHTML5window.sessionStorageを使用することもできますが、古いブラウザーでは機能しません。

バックワード ブラウザと非送信タイプをサポートする必要がある場合は、クライアント側でかなり複雑な Cookie/セッション管理を作成する必要があります。かわいくない。上記の2つで十分であることを願っています。

于 2013-01-28T09:50:59.967 に答える