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無料サーバーアプリケーションとネットワークプロキシ設定チュートリアルの詳細な説明

推薦する

MySQL テーブルにはどのくらいの量のデータを保存できますか?

プログラマーは MySQL を扱う機会が多く、毎日触れているとも言えますが、MySQL テーブルには...

MySQL マスタースレーブレプリケーションの読み書き分離構造の詳細な説明

MySQL マスタースレーブ設定MySQL のマスター/スレーブ レプリケーションと読み取り/書き込...

dockerカスタムイメージでphp7をビルドする方法

まず、簡単な Docker インストールを実行します。イメージをカスタマイズするには、ベースイメージ...

Docker 階層化パッケージを使用して Spring Boot を設定する方法

Spring Boot プロジェクトでは、Docker コンテナ、jar、war の階層化パッケージ...

Nginx 構成 クロスドメイン リクエスト Access-Control-Allow-Origin * 詳細な説明

序文403 クロスオリジン エラーが発生しNo 'Access-Control-Allow-...

Taobao ストアでズームインする効果は、スライドショーを使用する原理に似ています。

今日は、スライドを使用する原理に似た、Taobao のフロントエンドのマウス ズーム効果に慣れました...

JavaScript でオブザーバー パターンを実装する方法

目次概要オブザーバーパターンの応用シナリオオブザーバーパターンの実装要約する概要オブザーバー パター...

mysql エラー 1033 を解決する方法: ファイル内の情報が正しくありません: 'xxx.frm'

問題の説明1. 収集ステーションのデータベース2. データが無い状態での移動は問題ありませんが、デー...

vue-amap のインストールと使用手順

以前、Amap API を非同期にロードする方法を紹介しました。今回は、vue-amap の使用方法...

MySQL の 3 つの浮動小数点型 (float、double、decimal) の違いと概要について簡単に説明します。

各浮動小数点型のストレージ サイズと範囲は、次の表に示されています。タイプサイズ範囲(符号付き)範囲...

JS 4つの楽しいハッカー背景効果コードを共有する

目次例1例2例3例4例1 <html> <ヘッド> <title>...

使用したコマンドを表示するLinuxコマンドメソッドの概要

システムでは多くのコマンドが使用されていますが、使用したコマンドをどのように確認すればよいでしょうか...

MySQL 8.0.17 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.17のインストールと設定方法を参考までに紹介します。具体的な内容は...

MySQL はどのようにしてデータの整合性を確保するのでしょうか?

オンライン ビジネスにとってデータの一貫性と整合性が重要であることは明らかです。データが失われないよ...