我的第一个页面有到存储在数据库中的文件的链接。单击链接打开我的第二个页面,该页面以<iframe>
的形式显示文档。我试过三种方法调出第二页。其中一种方法不起作用,另外两种方法也不安全:点击后退注销,重新打开页面。
数据库中的文件被复制到服务器上的MyProject/web/文件夹中。<iframe src=...>
属性将替换为被覆盖的InlineFrame#onComponentTag(ComponentTag tag)
的文件路径。
方法1找不到文件。我更喜欢使用这种方法,因为它是最安全的。第一页
setResponsePage(DisplayResourcePage.class, params);
第二个页面应该从数据库中获取文件。
DisplayResourcePage(PageParameters parameters) {..}
一些诊断。浏览器显示404文件未找到错误。我不确定它在哪里找文件。src
将被替换。初始src
是否仍然会影响文件的读取位置?
realPath: C:Usersjoeworkspace.metadata.pluginsorg.eclipse.wst.server.coretmp1wtpwebappsMyProject
src before ./com.mycompany.shared.DisplayResourcePage?4-1.ILinkListener-pdfframe
方法2找到文件,但不安全。第一页
setResponsePage(new DisplayResourcePage(params));
第二个页面使用相同的构造函数从数据库中获取文件。
DisplayResourcePage(PageParameters parameters) {..}
一些诊断。src
是初始<iframe src=...>
属性。在任何情况下,它都会被文件路径替换。
realPath: C:Usersjoeworkspace.metadata.pluginsorg.eclipse.wst.server.coretmp1wtpwebappsMyProject
src before ./page?7-1.ILinkListener-pdfframe
方法3找到文件,但不安全。第一页
setResponsePage(new DisplayResourcePage(item.getModelObject()));
第二个页面使用不同的构造函数从数据库中获取文件。
public DisplayResourcePage(EntityOtherResourceModel resourceModelItem) {..}
诊断与方法2相同。
MyPage(AnyObject)通常比MyPage(PageParameters)更安全,因为它创建了不可书签的url。
我认为你应该关注为什么页面在注销后没有返回错误403(未授权)。对我来说,您的应用程序的身份验证逻辑存在一些问题。
另一种选择可能是将页面保存在浏览器缓存中,这就是为什么它在注销后加载,但默认情况下Wicket为页面设置"无存储"杂注。