- 締切済み
WIn2000+IE6でローカルで実行したJavaScriptが機能しない。
みなさんこんにちは。 Lucieと申します。 Windows2000 SP2 IE6.0 であるCookieの有効/無効を確認し、Cookieが有効ならサイト上のコンテンツページへ、Cookieが無効ならリモートのエラーページへジャンプするものを作成しました。 するとこのJavaScriptをローカル(IEのURL欄でD:\index.html)のような記述で実行した場合、なぜかサイト上のエラーページが表示されてしまいます。 おなじJavaScriptをサイトにUPし、リモート(IEのURL欄でhttp://www.hoge.or.jp/~.html)で確認すると、Cookieの有効が確認でき、正しいページにジャンプします。 もちろんIEのインターネットオプションの[プライバシー]タブおよび[セキュリティ]タブでのJavaScript(アクティブスクリプト)とCookieの設定は正しく行っております。 ローカルで実行した場合に限り、Cookieが有効になっているにもかかわらず、エラーページが表示されて原因が突き止められず困っております。 以上のような現象に遭遇された方、または改善方法をご存知の方いらっしゃいましたらお教えください。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>いかがなものでしょうか? いかがなものと言われても、試してみないことには、何とも言えないと思います。 #2のアドバイスは、推測で言っているに過ぎませんし、質問者が考えるクッキーのやりとりの動作というのも、推測だと思います。 なので、実際に試してみないことには、 どう? どう? と言い合ってみてもしょうがないのではないでしょうか? 私が知る所のクッキーの動作は、概ねこんな感じです。 あるページをサーバーで表示しようとする時、端末側からそのサイトで登録されているクッキーがあれば送られます。 なので、この時点では、そのサイトの前回の結果が残っていないのであれば、そのサイトでのクッキーはありません。ローカルで作ったクッキーは、サーバーには送られませんが、?のあとに付けて送られます。 サイト側で、?のあとのデータを解析してクッキーを発行するとして、これが、ページが既に表示されていたら、端末側には届きません。クッキー情報は、まず、ページのヘッダー情報として送られるからです。 なので、例えば、 サーバー側で、シリアル番号を受け取りましたみたいな、メッセージを表示して、端末側でOKボタンを押す。とかして、もう一度、やりとりする必要があります。 これは、 >別々のページで行えば?ということでしょうか? 別々のページでなく、同じページでも良いです。 というような推測なのですが、 ここで問題となるのは、サイト側のクッキーの発行タイミングです。 ページの表示に先立ち(つまりヘッダ情報が)送られているならいいのですが、間に合っていないのかもしれません。 他のPCでは動作するということについては、 私にはなんともいえないのですが、 実は、実験した時に、(既にクッキーが存在する)データが残っている、とか。 そんなこともあるのかもしれません。 いづれにしても、推測だけでものをいっているので、これといって確証があるわけではないので、見当違いだったら、余計な手間を掛けさせて申し訳ないと思いますが、一度、そのような、動作をさせるテストをされてみてはどうでしょう。それで、安定して動くようなら良し、ダメなら、私の推測は間違いであり、原因は別だということなので、出る幕はありません。 あと、確認して欲しいのは、そのダメなPCでは、ローカルでは、クッキーの保存&取り出しはうまく行っているんですよね? あと、今回の業務としてのページではなく、単なるクッキーの保存&取り出しは、うまく行くのですよね? そういうのは、前提ですので。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#1>なるほど、 見当違いかも知れませんが、 5)クエリーで受け取った値をサイト側Cookieとして発行。 6)サイト側からCookie値を確認。5)で書き込んだ値が入っていれば7)へ 5) と 6) の間で、ページを更新(ヘッダを送る)しないとだめだとかいうことはないですかね
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
どんな風に、書いていますか? 一応、ローカルで実行しても、クッキーのセットとゲットは、できますけど、 もしかして、クッキーをセットする時の動作をローカルでしないでゲットすることをしている(サイトが違う)のではないでしょうか?
補足
BLUEPIXYさん、レスありがとうございます。 すっごく強引な方法ですが 「特定のCD-ROMがあれば、閲覧制限を持たせたサイト上のコンテンツが見れる」 ということを実現するために、 【ローカル】 1)ローカル発行のCookieを作成 2)書き込めればローカルセキュリティゾーンはCookie有効 3)へ。 3)ローカルCookieに書き込んだ値をJavaScriptで抜いてくる。 4)抜いたCookieの値をクエリーとしてサイト側へ渡す。 【サイト】 5)クエリーで受け取った値をサイト側Cookieとして発行。 6)サイト側からCookie値を確認。5)で書き込んだ値が入っていれば7)へ 7)サイト上のコンテンツを閲覧許可 ということをしております。 このような状態でテストをした別のPC(OS、ブラウザは同一のものです。)で、 IEの[プライバシー]タブから[詳細設定]でCookieの設定を [ファーストパーティ]→[ダイアログを表示する] [サードパーティ]→[ダイアログを表示する] として、動作確認をしたところ、上記4)5)6)つまり、 「ローカル発行のCookieの値を、クエリーでサイトへ送信、その値をサイト発行のCookieとして受け取る。」という一連の動作は確認しました。(サイトから正しいCookieの値が受信されます。) ですが、十数台色々なOS、ブラウザでテストをしたところ、上記環境のある一台のPCでだけ、最初にご質問させていただいた挙動を示しました。 ですので、ローカルで発行したCookieの値をサイト上から参照しようとしているのではなく(これではセキュリティ上問題ですね。)、ローカルで実行したJavaScriptで値をクエリーで渡し、その値をサイト発行のCookieとして取得しようとしているのです。 このようなシチュエーションでエラーが発生しそうな状況があれば、些細なことでもよろしいのでお教え下さい。 お手数をお掛け致しますが宜しくお願い足します。
補足
>BLUEPIXYさん レスありがとうございます。 「ヘッダを送る」というのが私の知識では理解できていないのですが、5)と6)の間でのページを更新というのは、5)と6)、つまり、Cookieの発行(サイトからローカルのメモリに書き込み)とCookieの参照(ローカルに書かれたCookieをサイトへ)の処理を別々のページで行えば?ということでしょうか? ちなみに同一のJavaScriptの中でCookieのセットとゲットを行っております。こういう場合だとよくないということでしょうか? ちなみに、その他のPCでは問題無く動作し、この1台のPCでだけ問題が発生(固定周期で発生しない)しましたので、Cookieの読み書きのタイミングは疑っていなかったのですが、そのようなことがありうるのでしょうか? 同一OS、同一ブラウザの複数台のPCで検証した際に特定の1台だけでご質問させていただいた不具合がでたので、その1台のWindowsの設定に起因するものかと思っております。(あくまでも推測ですが^^;) 私の方がWindowsの知識にうといので、Windowsの方の設定で何かローカル実行やローカル書き込みに対して、何らかの制限がかけられているのかな?と憶測しているのですが。。。 いかがなものでしょうか?