• 締切済み

プロキシサーバとWebアプリシステムの関係

CGIを使ってWebアプリのシステムを開発していますが、 今年から納品のたびに悩まされているのでどうか、アドバイスをお願いいたします。 ※納品直前に本番マシンを使って、社内LAN環境のプロキシ経由で試験を行っています。 JavaScriptの実行エラーです。 どうも外部jsファイル内の関数が読み込まれていないようなのです。 今まで、onloadの処理関数が未定義というエラーが多かったため、 今回はjquery.jsも使用して、onloadの処理を書き換えました。(Bodyタグにonloadを書かないように)   onloadの処理がjsの読込みより早く動くのかと思ったりしまして。 当然ですが、開発時の環境ではまったく発生しないエラーです。 jqueryに変更したし、今回は大丈夫! と思っていたのに、本日からの試験で最初から 実行エラーになってしまいました。 ※本日からプロキシサーバ経由の固定IPの本番サーバ環境 試験者から指摘され、自分もテスト用ノートパソコン(XP)で動かしてみたら、 ショッパナからエラーが出ました。。。(かなりショックです) でも何故か、開発テスト用のサーバマシン(WindoesServer2003)をclientとして試験をしても エラーは出ないんです。 絶対にアプリではないと思いながらも、対処しなければならず 試行錯誤していますが、未だに完璧な解決策が見つかりません。 (ただ救われるのは納品先では発生していないようです。申告がありませんので) プロキシサーバを疑っているのですが(^^; 先ほどネットで調べていて、プロキシサーバ/ファイアウォールの種類/バージョンにより、 数字で始まるドメイン名に対してアクセスできない場合があるという記事を見つけました。 http://www.necdirect.jp/navigate/direct/info/guide/notfound/#nf09 試験環境では数字の固定IPを使っています。 プロキシサーバのほうで対応してもらうわけには行かないので 続けて調べていましたら ネットワークカメラ関係でのQ&Aでしたが、 ※プロキシサーバーを経由しているネットワークカメラと通信を行うと、    何らかの問題が生じることがあります。 の対処の一環として 「インターネットオプション」の「接続」の「LANの設定」のプロキシサーバの「詳細設定」の「例外」の 「次で始まるアドレスにはプロキシを使用しない(N):」の入力欄にIPを設定する ということが書いてありました。 私の試験用パソコンはプロキシサーバにチェックは入っておらず、自動設定になっていましたが あえて、プロキシサーバを使用するにチェックを入れ、 例外の入力欄に本番サーバにアクセスする固定IPを入れて設定保存し、試験をしてみたところ エラーは発生しないで動きました!(ちょっと感激) プロキシサーバを使用しないよう、設定を元に戻してみましたが、今のところ もうエラーは発生しなくなってしまいました。 (キャッシュされた!?) 因みにブラウザはIE限定の使用となっていますので他のブラウザは無視できます。 上記のようなプロキシサーバの使用による現象としてよいのか、 また対応策として、クライアントのIEの設定を変更することでいいのか、判断がつきません。 アプリも、今までjs外部ファイルをファイル名を変えてhtmlの上部と下部に定義したり してましたが、今回もそういう風に直したほうがいいのか?  1回目納品:</BODY>の直前に<META ・・・ 外部jsファイル指定>を移動して、          なんとかしのぎました。(そういう対処で解決された方がいまして)  2回目納品:<HEAD>内と</BODY>の直前に<META ・・・ 外部jsファイル指定>          をいれて、なんとかしのぎました。          1回目と同じ作りにしたのに、エラーが出てしまいまして、          jsファイルを別名コピーして使いました。邪道ですよね。。。    こんな対処でも ---- 今現在、どこからも申告はありません ----    (ちょっと怖いですが)       3回目納品:今回です。          <HEAD>内だけに<META  ・・・外部jsファイル・・・>記述。          <body onload=・・・>は全て、$(document).ready( function(){ ・・・           に記述。 どなたか経験した方、おられないでしょうか? または有識者のかた、アドバイスをいただけないでしょうか!

みんなの回答

noname#259269
noname#259269
回答No.1

企業サイトではよくある話です。 プロキシサーバでキャッシュされた場合のもっともお手軽な対処としては、 jsファイルのパスに文字列を埋め込んで、納品のたびに値を変えることですね。 例) hoge.js?123 また、タイムスタンプ値をプログラムで動的に埋め込むような形にすれば、何も考えなくてよくなります。

jg1wjz
質問者

お礼

操作を間違えたらしく、内容が消えてしまったので再度書かせていただきます。 ありがとうございました! その後、しばらく放置しておいたところ、同じエラーが発生してしまいました。(涙) プロキシの設定ではダメなようです。 それでもうひとつの方法、IPアドレスからnslookupでDNS名を取得し、その名前でアクセスするようにしたところ、今のところ4時間以上経過していますが順調にエラーもなく、動いています。 試験担当の方にも同様に接続してもらったところ、エラーにならなくなったと言われました。 納品先もDNS名でアクセスするということなので、とりあえず「良し」にしようかと思っています。 アドバイス有難うございます。 全てを対応させ確認するには時間がないので 次回からはそのように変更したいと思います。 debug中にキャッシュで悩まされたので、<meta>で"Expires" content="-1" や "Pragma" content="no-cache"を指定しています。 今回は逆にキャッシュされていれば良かった感じです。。。(後先考えなければ?) まだ安心はできないのですが、 このままうまく試験が終わりますよう祈るばかりです。 他の方のご意見ももう少し待ちたいと思いますので このままにさせておいてください。 本当に有難うございました。

関連するQ&A