0

用户通过访问第一次访问我的应用主页

http://[My domain]

生成表单的 URL

http://[My domain]/main/PageHome;jsessionid=v_qqIGVQlKBbkNSOcHkAQw?0

没关系,但我主页上的每个链接都有表单的 URL

http://[My domain]/main/..;jsessionid=v_qqIGVQlKBbkNSOcHkAQw?0-1.ILinkListener-lnkAbout

(此处复制的特定“关于我们”链接 URL 的长度为 102 个字符)。这些 URL 无效,因为存在两个点而不是PageHome正确完成路径。

有什么办法可以配置 GAE/J 来抑制这个 URL 缩写,或者这个操作是 web 框架的省吗?

作为一个(相当糟糕的)解决方法,我已经在链接的 URL 中对 JSessionID 的抑制进行了编码,并且正在对应用程序进行编码以在会话 cookie 被禁用时发出警告。但我会很感激任何指示。

伊恩·马歇尔

我的操作环境

Web 应用服务器:GAE/J 1.6.1.1(不是开发服务器)(我知道:它不是最新版本)
Web 框架:Apache Wicket 1.5.3
产生上述效果的 Web 浏览器:
·Mozilla Firefox 10.0.1
·Microsoft Internet Explorer 8.0.6001.18702
· 在我运行 Google Android 2.3.5 的 HTC Wildfire S 上找到

4

3 回答 3

1

我有同样的问题。通过在我的应用程序类中覆盖 newWebRequest 来修复它:

protected WebRequest newWebRequest(HttpServletRequest servletRequest,
        String filterPath) {
    WebRequest webRequest = super.newWebRequest(servletRequest, filterPath);
    return new ServletWebRequest(servletRequest, filterPath, webRequest.getUrl().canonical());
}
于 2012-02-23T14:56:02.993 回答
0

伊恩,一些重现问题的示例代码会很有帮助..

于 2012-02-20T21:02:24.790 回答
0

I fixed the problem by going around it.

All my web pages are descended from my PageBase class, which in turn descends from Wicket's WebPage.

· I disable my automatic removal of JSessionID by ceasing to override in my WebApplication

  public String ServletWebResponse.encodeURL(CharSequence url)

· In my PageBase constructor, I determine whether (session) cookies are detected as being stored or not.

· If not, then I raise an

  org.apache.wicket.RestartResponseException(final Class<C> pageClass)

to show my PageCookiesDisabled. This interrupts a "Not found" error from an invalid URL containing ".." characters, which I encountered previously.

于 2012-02-23T14:48:44.727 回答