Webページを作成していると、ブラウザバック(ブラウザの戻るボタン押下)時に有効期限切れのメッセージが表示される事があります。今回はこの事象についてまとめてみようと思います。
何故「ページの有効期限切れ」対策が必要なのか?
そもそも何故、ページの有効期限切れ対策が必要となるのでしょうか?
正直、個人的にはブラウザによるセキュリティ対策で個人情報をキャッシュさせない為の制御なので、ブラウザ仕様になるのでAP側では対処不要と考えています。
それでも業務用APなどではクライアント側が納得してくれないケースも多いと思われます。それは何故でしょうか?
- まず、格好と見栄えが悪い。
- 戻るボタンを押したのだから、当然直前の入力画面へ戻るだろうと勝手に思い込んでいる。
- ユーザから見れば意味不明の画面が表示されているので、何か異常があったのかと思う。
大体、こんなところでしょうか。
「ページの有効期限切れ」が発生する原因
- POSTでパラメータ送信している
- SESSIONを使用している
- 上記を使用しているページへ戻ろうとしてブラウザの「戻る」ボタンを押下した
ブラウザ側では「ページの有効期限切れ」を表示する際、どこをチェックするのか
多くのブラウザではページ有効期限を確認する際、以下の「HTTPヘッダー」の設定値を確認します。
- Last-Modified:最終更新日
- Expires:有効期限
- pragma :HTTP1.0仕様に基づくデータのキャシュ制御オプション
- Cache-Control:HTTP1.1仕様に基づくデータのキャシュ制御オプション
ページの有効期限切れが発生した場合、まずHTTPヘッダーの設定値が現在どうなっているか確認して下さい。
対策
クライアント側
サーバ(AP)側
- ブラウザの戻るボタンを無効又は非表示にしてしまう。
仮に有効期限切れの事象を回避出来てたとしても、DB更新後にブラウザバックされた場合など、ブラウザバックによって他にも問題が出てくる可能性が高いと思われます。AP側で一番良い対処法と思われるのはブラウザの戻るボタンがユーザの目立つ位置に見えているからつい押下してしまうので、戻るボタンを無効化又は非表示にしてしまうことが一番確実な対処方法と思われます。但しクライアントが納得すればの話ですが。
- POSTではなくGETを使用する。
ブラウザではPOSTは警告を出力しますが、GETではそのまま画面遷移します。但し、POST時にパスワードなどの個人情報や大量のデータを送信している場合はオススメしません。
- HTTPヘッダーの設定値を見直す。
HTTPヘッダーの設定値を変更する事で、ブラウザ側の有効期限チェックを回避する事が出来ます。
最近、JavaScriptやjQueryを使用する機会が増えてきたので、JavaScript関連の資格が無いか調べてみたら「マイクロソフト認定資格試験 (MCP) 70-480」という試験があるようなので少し調べてみました。試験内容の大半はJavaScript及びjQueryらしいので少し勉強すればなんとかなるかも。
資格名
マイクロソフト認定資格試験 (MCP) 70-480
試験番号
70-480
試験概要
HTML5 と JavaScript および CSS3 との組み合わせによるアプリケーションのプログラミングに関するスキルおよび知識の評価を目的としています。
受験対象者
この試験の受験対象者は、JavaScript を使用したさまざまなアプリケーション タイプおよびハードウェア/ソフトウェア プラットフォームに欠かせないビジネス/アプリケーション ロジックのプログラミングで 1 年以上の実務経験が必要です。また、受験対象者は、HTML を使用した、オブジェクト指向のイベント ドリブン プログラミング モデルの開発経験が最低 1 ~ 2 年必要です。
受験対象者は、以下のことについて十分に理解している必要があります。
- プログラム フローとイベントの管理
- 非同期プログラミングとスレッド処理
- データの入力規則と JQuery などのデータ コレクションの使用
- エラーと例外の処理
- 配列とコレクション
- 変数、演算子、および式の使用
- プロトタイプとのメソッドの使用
- 条件判断ステートメントと繰り返しステートメント
試験申込先
PROMETRIC
試験時間
140分
受験料
19,000円(税抜)
問題数
40問
合格ライン
700点
HTMLのリンクからネットワーク上の共有PC(CIFS)へアクセスしたいという要望があった場合の対処方法を記載します。
HTMLリンクはfile URI形式で設定
UNCパスでは「\\common\dir\test.xls」というエクスプローラでよく見かける記述となりますが、file URIのパスでは「file://///common/dir/test.xls」という記述形式となります。このfile URI形式でHTMLではリンクを設定します。
file URIパスへのリンクが有効になるようにブラウザ毎に設定
メジャーなブラウザ(IE以外)の多くはセキュリティ的観点から、file URIのリンクをクリックしてもリンク先を表示出来ない設定となっています。これを解除するためにはブラウザ毎に対応する必要があります。
Internet Explore
IEの場合、セキュリティ対策が甘いのか何も設定する必要はありません。
Firefox
- 「user.js」ファイルを作成
FireFoxの場合は設定が少し面倒で、プロファイルへ許可するアドレスを追加する必要があります。その設定ファイルをJavaScriptで以下の様に記述します。
|
user_pref("capability.policy.policynames", "localfilelinks"); user_pref("capability.policy.localfilelinks.checkloaduri.enabled", "allAccess"); user_pref("capability.policy.localfilelinks.sites", "http://common.dir.co.jp"); |
※”http://common.dir.co.jp”の箇所 をリンクを許可したいサーバのアドレスへ変更して下さい。複数ある場合はスペースで区切って記述します。
- FireFoxのプロファイルフォルダへ「user.js」ファイルを配置
配置先「%AppData%\Mozilla\Firefox\Profiles\(英数字のランダム文字列).default」
※既に「user.js」ファイルが存在している場合は記述を追加して下さい。
- FireFoxを再起動
FireFoxを再起動すると「user.js」ファイルへ記述した内容が「prefs.js」(Windowsで言うレジストリのようなもの)へ追加されます。
JBossの起動で少しハマったのでメモしておきます。
JBossのインストール状態
- 【前提】javaがインストールされていること
- JBossサイトからzipファイルをダウンロード
- ダウンロードしたzipファイルを解凍して配置
これだけでJBossのインストールとしては完了となります。
この後に[JBossのホームディレクトリ]\bin\run.batを実行すれば起動するはずなのですが、一瞬コマンドプロンプトの画面が表示されるだけでエラーメッセージも表示せずに即終了してしまい、JBossが起動しないという事象が発生しました。
原因
- 環境変数「JAVA_HOME」の設定
「JAVA_HOME」へ「C:\Java\jdk1.6.0_45\bin」と指定していたのが原因でした(「\bin」が余計でした・・・)。
「C:\Java\jdk1.6.0_45」へ修正したら正常に起動しました。
Webアプリケーションを作成する上で重要になってくるのがMVCと呼ばれるソフトウェア設計モデルです。
MVCとは
- ソフトウェアを「Model」・「View」・「Controller」という3要素の組み合わせでシステムを実装する方式です。
MVCモデルのイメージ
-
Model
- Modelは、システムの中で処理の中核を担うビジネスロジック(アプリケーションが扱う領域のデータと手続き)を担当するシステムの本体部分に当たります。
- データベースなどに格納された生のデータを隠蔽し、抽象化された形のAPIを通じて他のモジュールからのアクセスをコントロールするモジュールです。
- Modelは入出力や表示といった処理は行わず、業務モデルの実装といった部分を担当します。
- アプリケーション特有のルールやロジック(ビジネスロジック)を持ち、データの整合性に絶対の責任を持ちます。
- データの変更をViewに通知するのもModelの責任となります。(Modelの変更を通知するのにObserverパターンが用いられることもあります)。
- 多くのアプリケーションではデータの格納に永続的な記憶の仕組み(データベースなど)が使われています。
- MVCの概念では、データの(UI以外の)入出力は取り扱わないので、データアクセスも本来MVCの概念の範疇を超えるものではありますが、敢えて言えばModelの中に隠蔽されると考えられます。
- J2EEでは JavaBeans、EJBがモデルを担当します。
- サーバサイドでいうserviceに関する処理を行なっています。
- View
- Viewは、表示、入出力といった部分を担当します。
- Modelのデータを取り出してユーザが見るのに適した形で表示する要素です。
- UIへの出力を担当します。
- Modelが提供する抽象化されたデータを、どのような形式で人へ見せるのかを記述したモジュールです。
- GUIアプリケーションの場合、使用するGUI部品や画面上のレイアウトを指定します。
- 必要な情報をModelから取り出して画面へ表示させる為の処理を行います。
- J2EEではServletやJSPで実装します。
- 一般的な HTML表示に関してはJSP、そのほかの特殊なデータ(バイナリデータ)を出力する場合は Servletを用いるのが標準的な使用方法となります。
- Controller
- コントローラは、ViewとModelを制御します。
- 自分自身では表示を行ったりロジックの実行は行わず、Viewからの入力に応じて、必要なロジックの実行をModelに依頼し、その結果表示をViewに依頼します。
- ユーザの入力(通常イベントとして通知されます)に対して応答し、それを処理する要素です。
- UIからの入力を担当します。
- ViewとModelの間に位置して、ユーザーにどんな順序でデータを見せて行くとか、Viewを通したユーザーからの入力をModelへのAPIコールへとマッピングするのがこのモジュールの役割となります。
- ModelとViewに変更を引き起こす場合もありますが、直接描画を行ったり、Modelの内部データを直接操作したりはしません。
- J2EEではServletでControllerを実装します。
- イベントはコントローラで受け取り、画面上構成するボタン(イベント)の数だけ処理があります。
MVCモデルのメリット
- 並行開発
機能毎の分離が明確になることにより独立性が確保出来る。
・開発の分業が可能になる
・専門家を配置しクオリティーを上げる事が可能になる
- 再利用性
コンポーネント間の依存性が最小限に抑えられる為、他の部分の影響を受けにくい。
・コンポーネントの再利用がしやすくなる
・他のコンポーネントの変更が原因で、複数の担当者が同一のソースに対してメンテナンスを行う、というような事態を避けることもでき、保守性も確保される
ふとパソコンのモニターを眺めたら、なんだか画面の文字や画像が全体的に薄っすらとぼやけている現象が発生・・・。
色々調べてたらどうもモニターの故障と判明し、購入からもう4,5年は経つので寿命だろうと思い買い替えを決断。
予算は前回と同様4,5万位で店頭で探して値段的にも4万円位で妥当だったのでMITSUBISHIのワイド液晶ディスプレイ「RDT272WX(BK)」へ決めました。
以前使用していた、BENQの「E2400HD」と比較すると以下の様に性能面は全体的に向上してます。
しかし、しばらく見てない内にIPS方式やらTN方式やらVA方式だのと色々ありすぎて素人の自分にはよく分からないっすっ(><)。
MITSUBISHI ワイド液晶ディスプレイ「RDT272WX(BK)」とBENQの「E2400HD」の機能比較
機能 | MITSUBISHI「RDT272WX(BK)」 | BENQ「E2400HD」 |
発売日 | 2012/6/1 | 2007/10/31 |
価格 | \39,100 | \4万円前後 |
最大表示画素数 | 1920×1080 | 1920x1080 |
輝度 | 250cd/m² | 300cd/m² |
応答速度 | 3.5ms | 5ms |
視野角 | 左右178°/上下178° | 左右160°/上下170° |
コントラスト比 | 8000:1 | 1000:1 |
解像度(規格) | 高透過率IPS方式液晶パネル | フルHD液晶パネル |
皆様は動画再生プレイヤーは普段何を使用しているでしょうか?
私は通常「GOM Player」を使用しているのですが、一部のmkvファイルを再生すると映像は表示されるが音声だけ出ないという事象がたまに発生します。
対応方法
以下の様なmkv専用の再生プレイヤーをインストールしてmkvファイル再生はそちらをメインにするのが一番手っ取り早い対応です。
mkv再生ソフト
ダウンロード先
「駑馬十駕」 IT系情報を中心に調べた事をコツコツ綴っています。