0

スマートフォン、タブレット、および Web ブラウザー用の HTTP キャッシュ制御ヘッダーの動作。ウェブサイトのモバイル版で作業していたときに、問題が発生しました。私の目標は、Web ページを決してキャッシュしないようにブラウザーに指示することです。Chrome、Firefox、Internet Explorer、Safari、iPhone のブラウザー、Android フォンのブラウザーなど、すべてのブラウザーでこれを実行してほしいと思います。

次の HTTP キャッシュ制御コード jsp を使用しました。以下の jsp ファイルを <%@include file="myjsp.jsp"%> を使用して他の jsp にインクルードします。Web ブラウザでは正常に動作しますが、モバイル ブラウザでは動作しません。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"
contentType="text/html;charset=UTF-8" isELIgnored = "false" %>
<%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c'%>
<%@taglib prefix="c2" uri="http://java.sun.com/jstl/core_rt"%>
<%@taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt"%>
<%@ taglib prefix="sec"
uri="http://www.springframework.org/security/tags"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>

 <%
response.setHeader("Cache-Control",
        "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Cache-Control",
        "post-check=0, pre-check=0', false");

response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.

 %>

これらのヘッダーの何が問題になっていますか?

HTTP キャッシュ制御ヘッダーが一部のブラウザーで機能し、他のブラウザーでは機能しないという同じ問題がありますか?

また、モバイル ブラウザーとデスクトップ ブラウザーの間に特定の違いはありますか。

4

3 に答える 3

0

ログイン資格情報が一致した直後に、セッション属性を作成し、「有効」と言って、jsp で null 以外の値で初期化します。次に、次のコードで verify.jsp を作成します。

<%
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
if(session.getAttribute("valid")==null)
{
    out.println("<script>parent.location.href='login.jsp'</script>");
}
%>

このjspファイルを各jspページに含めるだけで完了です。「session.invalidate();」と書くことを忘れないでください。logout.jsp で

それがうまくいくことを願っています.. !!!

于 2014-08-28T09:15:00.153 に答える
0

まず第一に、維持scriptletsするJSPことは決して推奨されません。scriptletsからすべてを削除し、可能な限りタグJSPを使用またはストラットします (ストラット タグのような他のフレームワークよりもタグをJSTL優先します)。JSTL

次に、タグを JSP の上に置いて、以下のメタ タグを使用してキャッシュを設定しないようにします。

<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />

詳細については、こちらこちらもご覧ください

それでも問題が解決しない場合は、お知らせください。

于 2013-09-19T05:41:36.243 に答える