Вот что происходит: клиент запрашивает страницу в первый раз, вообще не отправляя куки:
$ curl -v http://pixlshare.com/upload
Сервер ничего не знает о возможностях клиента, основываясь на этом запросе, в частности,поддерживает куки или нет.Следовательно, для большей безопасности он отправляет и cookie, и JSESSIONID
, закодированные в URL:
< Set-Cookie: JSESSIONID=25E7A6C27095CA1F560BCB2983BED17C; Path=/; HttpOnly
...
<a wicket:id="image1Link" href="gallery/OKfzVk;jsessionid=25E7A6C27095CA1F560BCB2983BED17C">
Другими словами, контейнер сервлета защищенно добавляет JSESSIONID
к каждому URL,на тот случай, если клиент не поддерживает куки.
Так почему JSESSIONID
исчезает при втором запросе?Потому что теперь клиент отправляет cookie в HTTP-запросе и сервер знает, что клиент их обрабатывает.При этом JSESSIONID
больше не нужен.
$ curl -v -b JSESSIONID=25E7A6C27095CA1F560BCB2983BED17C http://pixlshare.com/upload
> Cookie: JSESSIONID=25E7A6C27095CA1F560BCB2983BED17C
...
<a wicket:id="image1Link" href="gallery/OKfzVk">
С другой стороны, если клиент не поддерживает файлы cookie, сервер продолжит перезаписывать URL-адреса.
Это неПроблема с калиткой, это функция Tomcat.
КСТАТИ (с вашего сайта JavaScript):
path = path.replace(/^C:\\fakepath\\/i, '');
Что за чертовщина ... 1027 *?