1

OK、ご容赦ください。可能な限り詳細に問題を説明しようと思います。

3つのHTML(および適切な.js)ファイルがあります。sessionStorageにコンテンツを追加でき、いずれかのHTMLファイルにいるときにsessionStorageのコンテンツを表示します。私はFirefoxの最新バージョンでローカルにファイルを実行しています。これは-私が知る限り-file://のsessionStorageをサポートしているので、すべてがうまく機能し、HTML1のsessionStorageに何かを追加してHTML2に移動できます。データは正しく表示されます。私はsessionStorageの概念を理解し、すべてが順調です。

しかし、ここで奇妙になります。HTML1のsessionStorageにコンテンツを追加し、a-hrefを介してHTML2に移動すると、sessionStorageのコンテンツがそこにあります。しかし、URLバーをクリックしてEnterキーを押すと、コンテンツが失われます。SessionStorageは「null」です。HTML1に戻り、ctrl + r(リロード)を押してもnullを押します。しかし、URLバーをクリックしてEnterキーを押すと(HTML1ページを表示しているときに)、sessionStorageコンテンツが返されます。

いくつかのチェックを行ったところ、URLバーをクリックしてEnterキーを押すと、別のsessionStorageインスタンスが作成されたように見えます。

ただし、プロジェクトをサーバーにアップロードした場合、これは発生しません。FirefoxがsessionStorageをサポートしている場合、アプリケーションをローカルで実行するとこれが発生し、実際に何が起こっているのでしょうか。どんな説明もありがとう。

4

2 に答える 2

2

ファイルシステムのファイルを見ると、ブラウザはすべてのファイルをドメインのように見なしていると確信しています。したがって、Ajax、共有Cookie、セッションなどはありません。私が奇妙だと思うのは、いくつかのセッションを維持できることです...

ダウンロードしたhtmlファイルを開くのに十分な愚かなユーザーがいて、それらの保護がなければ、そのhtmlファイルはシステム上のすべてのものを見ることができると想像してください。また、.exe(または同等のもの)を開いたときにウイルス対策ソフトウェアとOSが警告するのと同じように、.htmlファイルを開いたときに警告は表示されません。

おそらくWAMPのようなローカルサーバーを使用する必要があります。または、可能であればApache。

于 2012-12-15T17:24:22.013 に答える
2

わかりました。ファイルを開いているため、ローカルでは機能しません。サーバーで実行する必要があります。

ブラウザは、URL(およびもちろん他の内部のもの)を使用してセッションを結び付けます。これが、アップロード先のサーバーで機能する理由です。ブラウザは異なる場所からの異なるページのように見えるため、これはファイルURLでは機能しません。したがって、セッションは共有されません。

WAMPなどをローカルにセットアップして実行すると、機能します。これはまさにxavierm02が提案したものです。

于 2012-12-16T11:25:02.757 に答える