Java 链接URL(带有JSSessionID)在URL重写期间被截断
用户第一次通过访问我的应用程序主页Java 链接URL(带有JSSessionID)在URL重写期间被截断,java,google-app-engine,wicket,wicket-1.5,Java,Google App Engine,Wicket,Wicket 1.5,用户第一次通过访问我的应用程序主页 http://[My domain] 结果生成表单的URL http://[My domain]/main/PageHome;jsessionid=v_qqIGVQlKBbkNSOcHkAQw?0 http://[My domain]/main/..;jsessionid=v_qqIGVQlKBbkNSOcHkAQw?0-1.ILinkListener-lnkAbout 那很好,但是我主页上的每个链接都有表单的URL http://[My domain]
http://[My domain]
结果生成表单的URL
http://[My domain]/main/PageHome;jsessionid=v_qqIGVQlKBbkNSOcHkAQw?0
http://[My domain]/main/..;jsessionid=v_qqIGVQlKBbkNSOcHkAQw?0-1.ILinkListener-lnkAbout
那很好,但是我主页上的每个链接都有表单的URL
http://[My domain]/main/PageHome;jsessionid=v_qqIGVQlKBbkNSOcHkAQw?0
http://[My domain]/main/..;jsessionid=v_qqIGVQlKBbkNSOcHkAQw?0-1.ILinkListener-lnkAbout
(此处复制的特定“关于我们”链接URL的长度为102个字符)。这些URL无效,因为存在两个点而不是PageHome
,以正确完成路径
是否有任何方法可以配置GAE/J以抑制此URL缩写,或者此操作是web框架的范围
作为一个(相当糟糕的)解决方案,我已经在我的链接的URL中编码了JSSessionID的禁止,并且正在对应用程序进行编码,以便在会话cookie被禁用时发出警告。但如果有人给我指点,我会很感激的
伊恩·马歇尔
我的操作环境
Web应用服务器:GAE/J 1.6.1.1(不是开发服务器)(我知道:它不是最新版本)
Web框架:ApacheWicket 1.5.3
产生上述效果的Web浏览器:
·Mozilla Firefox 10.0.1
·Microsoft Internet Explorer 8.0.6001.18702
·正如我在运行谷歌安卓2.3.5的HTC Wildfire S上发现的那样,一些重现问题的示例代码会很有帮助。我通过绕过它解决了问题 我的所有网页都是从PageBase类派生的,而PageBase类又是从Wicket的网页派生的 ·我通过停止覆盖我的Web应用程序来禁用自动删除JSessionID
public String ServletWebResponse.encodeURL(CharSequence url)
·在我的PageBase构造函数中,我确定是否检测到(会话)Cookie被存储
·如果没有,我会提出一项建议
org.apache.wicket.RestartResponseException(final Class<C> pageClass)
org.apache.wicket.RestartResponseException(最终类pageClass)
要显示我的页面,请禁用。这会中断包含“.”字符的无效URL的“未找到”错误,我以前遇到过这种情况。我也遇到过同样的问题。通过使用以下内容覆盖我的应用程序类中的newWebRequest修复了此问题:
protected WebRequest newWebRequest(HttpServletRequest servletRequest,
String filterPath) {
WebRequest webRequest = super.newWebRequest(servletRequest, filterPath);
return new ServletWebRequest(servletRequest, filterPath, webRequest.getUrl().canonical());
}
在我看来,不需要特殊的示例代码。访问运行在GAE/J中的Wicket网页的简单操作为我生成了上述URL(对于我列出的框架和环境的版本)。任何现有的Wicket web应用程序(包括我的框架和环境版本)如果显示从web页面派生的页面,则应该显示我现在获得的内容。还有一个由Martin Grigorov提供的补丁