URL ссылки (с JSessionID) усекаются при перезаписи URL - PullRequest
0 голосов
/ 14 февраля 2012

Первый визит пользователя на домашнюю страницу моего приложения через посещение

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

(длиной 102 символа для конкретной ссылки "О нас", скопированной сюда). Эти URL недействительны из-за наличия двух точек вместо PageHome для правильного завершения пути.

Можно ли каким-то образом настроить GAE / J для подавления этой аббревиатуры URL-адреса, или эта операция является областью веб-инфраструктуры?

В качестве (довольно плохого) обходного пути я уже кодировал подавление JSessionID в URL-адресах моих ссылок и кодирую приложение, чтобы оно выдавало предупреждение, если сеансовые куки отключены. Но я был бы признателен за любые указатели.

Ян Маршалл

Моя операционная среда

Сервер веб-приложений: GAE / J 1.6.1.1 (не dev-сервер) (я знаю: это не последняя версия)
Веб-фреймворк: Apache Wicket 1.5.3
Веб-браузеры, производящие вышеуказанный эффект:
· Mozilla Firefox 10.0.1
· Microsoft Internet Explorer 8.0.6001.18702
· Как установлено на моем HTC Wildfire S под управлением Google Android 2.3.5

Ответы [ 3 ]

1 голос
/ 23 февраля 2012

У меня была такая же проблема.Исправлено путем переопределения newWebRequest в моем классе приложения с этим:

protected WebRequest newWebRequest(HttpServletRequest servletRequest,
        String filterPath) {
    WebRequest webRequest = super.newWebRequest(servletRequest, filterPath);
    return new ServletWebRequest(servletRequest, filterPath, webRequest.getUrl().canonical());
}
0 голосов
/ 23 февраля 2012

Я исправил проблему, обойдя ее.

Все мои веб-страницы происходят от моего класса PageBase, который, в свою очередь, происходит от веб-страницы Wicket.

· Я отключаю автоматическое удалениеJSessionID перестает переопределять в моем WebApplication

  public String ServletWebResponse.encodeURL(CharSequence url)

· В моем конструкторе PageBase я определяю, обнаруживаются ли (сеансовые) cookie-файлы как сохраненные или нет.

· Если нет, то яподнять

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

, чтобы показать мой PageCookiesDisabled.Это прерывает ошибку «Не найдено» из недействительного URL-адреса, содержащего символы «..», с которым я столкнулся ранее.

0 голосов
/ 21 февраля 2012

Ян, может помочь пример кода для воссоздания проблемы.

...