相关疑难解决方法(0)

如何在所有浏览器中控制网页缓存?

我们的调查向我们表明,并非所有浏览器都以统一的方式尊重http缓存指令.

出于安全原因,我们不希望在我们的应用程序某些网页缓存,有史以来,通过Web浏览器.这必须至少适用于以下浏览器:

  • Internet Explorer 6+
  • Firefox 1.5+
  • Safari 3+
  • Opera 9+

我们的要求来自安全测试.从我们的网站注销后,您可以按后退按钮查看缓存页面.

https caching http http-headers

1474
推荐指数
17
解决办法
88万
查看次数

注销后阻止用户查看以前访问过的安全页面

我要求最终用户在注销/注销后不能返回受限页面.但目前最终用户可以通过浏览器后退按钮,访问浏览器历史记录或甚至通过在浏览器的地址栏中重新输入URL来实现.

基本上,我希望最终用户在注销后不能以任何方式访问受限制的页面.我怎样才能做到最好?我可以用JavaScript禁用后退按钮吗?

jsp servlets back-button logout browser-history

99
推荐指数
2
解决办法
6万
查看次数

如何在JSF中实现登录过滤器?

即使用户知道某些页面的URL,我也想阻止访问某些页面.例如,/localhost:8080/user/home.xhtml(需要先登录)如果没有记录则重定向到/index.xhtml.

在JSF中如何做到这一点?我在Google上读到需要过滤器,但我不知道该怎么做.

jsf authorization login jsf-2 servlet-filters

47
推荐指数
1
解决办法
6万
查看次数

com.sun.faces.numberOfViewsInSession vs com.sun.faces.numberOfLogicalViews

Mojarra JSF 2的实现具有以下上下文参数:

  • com.sun.faces.numberOfViewsInSession (默认为15)
  • com.sun.faces.numberOfLogicalViews (默认为15)

他们之间有什么区别?文档中没有提到这些内容.我的应用程序在ViewExpiredException某些页面遇到问题,但在我们将这些设置提高到(更高)值后,我们就停止了问题.

我的应用程序是一个财务,重量级,支持Ajax的应用程序(有些屏幕有50多个输入,可以选择通过AJAX添加更多数据/输入).

这种行为可能是什么原因?我知道第一个参数定义了会话中保存的"页面"的数量,这对于后退按钮可能很有用,但我触发的用例ViewExpiredException不使用后退按钮.第二个参数是指什么?如果我保持在同一个屏幕但通过AJAX继续添加大量数据,这是否会导致需要更多的逻辑视图用于页面?

viewstate jsf jsf-2 viewexpiredexception mojarra

36
推荐指数
2
解决办法
3万
查看次数

JSF缓存静态资源过滤器

如何编写一个过滤器,根据Google的建议(https://developers.google.com/speed/docs/best-practices/caching)适当缓存静态资源.

是否足以创建一个过滤器,将过去修改的日期设置为某个静态日期(每次服务器重新启动时都会更改)?

为所有可缓存资源指定Expires或Cache-Control max-age之一以及Last-Modified或ETag之一非常重要.指定Expires和Cache-Control:max-age或指定Last-Modified和ETag都是多余的.

上面的链接似乎建议您需要指定Expires或Cache-Control.为什么这有必要?

jsf browser-cache servlet-filters

15
推荐指数
2
解决办法
1万
查看次数

JSF 2.0 View Scope后退按钮安全吗?

JSF 2.0 View Scope"后退按钮"安全吗?例如,如果我在View Scope中存储模型并从第1页,第2页,第3页到第4页,沿途修改模型对象(通过输入字段),然后点击后退按钮两次返回页面2并进行更改(再次转到第3页),视图范围中的模型是否仅包含最初呈现第2页时所做的更改,还是后续页面的更改?

Oracle ADF具有/称之为"进程范围"的东西,它通过标记放置到会话中的内容来处理此问题,因此每个页面都有自己的模型副本.

jsf-2

12
推荐指数
1
解决办法
8745
查看次数

禁用浏览器前进/后退按钮的网页缓存

我正在使用以下元标记来阻止页面的浏览器缓存:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<meta http-equiv="Vary" content="*" />
Run Code Online (Sandbox Code Playgroud)

案件:

  1. 浏览器已经打开了page1.
  2. 新链接粘贴在浏览器地址栏中,现在page2打开了安全页面.
  3. 用户执行操作page2并重定向到page3.

单击后退按钮时page3,用户将被重定向到page1(没有缓存,在这种情况下工作正常).当用户单击前进按钮时page1,用户将转发到安全页面page2.这不应该发生.

以上所有内容均在IE9上进行了测试.

这是怎么造成的,我该如何解决?

html jsf internet-explorer cross-browser

12
推荐指数
2
解决办法
3万
查看次数

viewExpiredException JSF

为了处理JSF中的viewExpiredException,我进行了编码

<error-page>
    <exception-type>javax.faces.application.ViewExpiredException</exception-type>
    <location>/error.html</location>
</error-page>

<session-config>
    <session-timeout>1</session-timeout>
</session-config>
Run Code Online (Sandbox Code Playgroud)

web.xml.

error.html我已重定向到原始登录页面.但问题是会话范围bean即使会话过期也没有被清除.有什么方法可以解决这个问题吗?

java session jsf viewexpiredexception

9
推荐指数
1
解决办法
5935
查看次数

为什么Safari不尊重我的缓存控制指令?

有一个特定的页面,我希望浏览器始终加载,特别是当用户按下浏览器后退按钮才能访问它.

所以我在这个页面的标题中使用了以下'Cache-Control'指令(直接从我的代码中获取PHP).

$headers['Cache-Control'] = 'no-store, no-cache, must-revalidate, max-age=0';
Run Code Online (Sandbox Code Playgroud)

这适用于FF,IE和Chrome,但Safari(5.0.1)似乎忽略该指令并且无法重新加载页面(跨多个用户,因此它似乎不是特定于设置的问题).搜索没有发现任何已知的错误,所以我假设我的结果有些不对劲.

任何指针都将非常感激.

更新:刚刚在SO上找到了这个答案.

Safari浏览器忽略了我的无缓存

尚未尝试过,但看起来很有希望.很奇怪它是身体标签的补充,所以我持怀疑态度.

safari cache-control

9
推荐指数
1
解决办法
2万
查看次数

会话到期时的授权重定向不适用于提交JSF表单,页面保持不变

我正在使用JSF2.我已经实现了一个自定义面部servlet,如下所示:

public class MyFacesServletWrapper extends MyFacesServlet {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

其中我正在进行一些授权检查并在用户未登录时发送重定向:

public void service(ServletRequest request, ServletResponse response) {
    HttpServletRequest req = (HttpServletRequest) request;
    HttpServletResponse res = (HttpServletResponse) response;

    if (...) {
        String loginURL = req.getContextPath() + "/LoginPage.faces";
        res.sendRedirect(loginURL);
    }
}
Run Code Online (Sandbox Code Playgroud)

这在用户尝试导航到另一个页面时有效.但是,当JSF命令链接/按钮提交JSF表单时,这不起作用.该行sendRedirect()线被击中并执行,没有异常被抛出了,但用户停留在同一页面.基本上,根本没有视觉变化.

为什么这适用于页面导航,而不是表单提交?

java jsf redirect authorization jsf-2

8
推荐指数
1
解决办法
9452
查看次数