HTMLおよびJSPページがキャッシュされ、Webサーバーから再取得されるのを防ぎます。

HTMLおよびJSPページがキャッシュされ、Webサーバーから再取得されるのを防ぎます。
ユーザーがログアウトした後、ブラウザの戻るボタンがクリックされると、Web アプリケーションは保護されたページを適切に保護できなくなります。セッションが破棄された後 (ユーザーがログアウトした後)、保護された JSP ページがブラウザに再度表示されます。
ただし、ユーザーが戻りページのリンクをクリックすると、Web アプリケーションはログイン ページにジャンプし、セッションが終了したことを通知します。ログインしてください。

上記の問題の根本は、ほとんどのブラウザに戻るボタンがあることです。

戻るボタンをクリックすると、デフォルトではブラウザは Web サーバーからページを再取得せず、ブラウザ キャッシュからページを読み込みます。

Java ベースの Web アプリケーションではこの機能は制限されず、この問題は PHP、ASP、.NET ベースの Web アプリケーションでも発生します。
幸いなことに、HTTP ヘッダー「Expires」と「Cache-Control」は、アプリケーション サーバーがブラウザーとプロキシ サーバー上のキャッシュを制御するためのメカニズムを提供します。

HTTP ヘッダー Expires は、キャッシュされたページの有効期限が切れる時期をプロキシ サーバーに通知します。
HTTP1.1 仕様で新しく定義されたヘッダー情報 Cache-Control は、ブラウザにページをキャッシュしないように通知できます。

戻るボタンをクリックすると、ブラウザはサーバーに再アクセスしてページを取得します。

Cache-Control を使用する基本的な方法は次のとおりです。
1) no-cache: キャッシュを強制的にサーバーから新しいページを取得する
2) no-store: いかなる状況でもページをキャッシュに保存しない

安全のためには、HTMLページとJSPの両方にいくつかの設定を追加するのが最善です。

HTML ページの場合は以下を追加します。

コードをコピー
コードは次のとおりです。

<meta HTTP-EQUIV="pragma" CONTENT="no-cache">
<meta HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<meta HTTP-EQUIV="有効期限" CONTENT="0">

JSP ページの場合は以下を追加します。

コードをコピー
コードは次のとおりです。

<%
response.setHeader("Cache-Control","no-store");
response.setHeader("プラグマ","キャッシュなし");
response.setDateHeader("有効期限",0);
%>

それでおしまい。

<<:  CSS3 で QR コードスキャン効果を実装する例

>>:  AWS無料サーバーアプリケーションとネットワークプロキシ設定チュートリアルの詳細な説明

推薦する

Docker stopはすべてのコンテナを停止/削除します

この記事では主に、すべてのコンテナを削除する Docker stop/remove を紹介し、皆さん...

Maven プロジェクトのリモート デプロイメント && Tomcat を使用してデータベース接続を構成する方法

1つ。 tomcat を使用したリモート展開1.1 発生した問題:プロジェクトでは、サードパーティの...

特定のシンボルで複数の行と列に分割するMySQLの例

一部の障害コード テーブルでは、履歴またはパフォーマンス上の理由から、次の設計パターンが使用されます...

CentOS システムのディスク パーティションを拡張する方法

問題/障害/シナリオ/要件Eve-ng の仮想マシン OVA のハードディスクは 38G しかないた...

FTP環境設定ソリューション(vsftpd)の詳細な説明

1. vsftpdコンポーネントをインストールするインストールコマンド: [root@ink4t ~...

Linux の特別な権限 SUID、SGID、SBIT の詳細な説明

序文Linux のファイルまたはディレクトリの権限については、通常の rwx 権限についてすべて知っ...

JavaScript のデシェイクとスロットリングの例

目次安定スロットル: 手ぶれ防止: 一定時間内に最後のタスクのみを実行します。スロットル: 一定期間...

MySQL で自動インクリメントシーケンスを実装するためのサンプルコード

1. シーケンステーブルを作成する テーブル `sequence` を作成します ( `name` ...

JavaScript で虫眼鏡の特殊効果を実現

達成される効果:マウスを小さな画像の上に置くと、小さなブロックが小さな画像の上に表示され、この小さな...

MySQL の 6 つの一般的な制約タイプの詳細な説明

目次序文1.nullでない2. ユニーク3. デフォルト4.主キー自動増分主キー5. 外部キー6.チ...

MYSQL8.0.13 無料インストール版 設定チュートリアル例 詳細説明

1. ダウンロード、例として8.0を取り上げますダウンロードアドレス: https://dev.my...

複数の Docker コンテナが同じポート番号を持たない場合の解決策

背景Dockerでは、同じイメージを使用して4つのコンテナを作成します。ネットワークはブリッジモード...

Nginx ロケーション設定(ロケーションのマッチング順序)の詳細な説明

ロケーションは「位置指定」を意味し、主にさまざまな位置指定のための URI に基づいています。これは...

MySQLテーブルのテーブル構造を素早く変更する方法

MySQL テーブルのテーブル構造をすばやく変更する - 「MySQL 管理」から抜粋 ALTER ...

MySQL クエリ キャッシュのグラフィカルな説明

目次1. 原則の概要クエリキャッシュシステム変数1. クエリキャッシュを持つ2. クエリキャッシュ制...