Сокращение URL: перенаправление на цель 'file: //' (цель протокола файла) - PullRequest
2 голосов
/ 17 декабря 2009

Я пробую простую реализацию укороченного URL, такого как tinyurl.com или bit.ly. В настоящее время я делаю response.sendRedirect(targetURL) в своем сервлете - который отлично работает для целевых URL http / ftp.

Однако у меня возникают проблемы с перенаправлением на цели, такие как file:///c:/temp (где c:\temp, конечно, в локальной / клиентской системе).

Ввод file:///c:/temp в адресной строке Firefox работает, но перенаправление с сервера, похоже, ничего не делает.

Разве это невозможно по какой-то причине безопасности? Или я тут что-то не так делаю?

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 17 декабря 2009

Разве это невозможно для некоторой безопасности? причина? Или я что то не так делаю здесь

Да.

1 голос
/ 17 декабря 2009

Не хочу испортить красоту моего первого ответа, объяснив это. Поэтому я решил, что объяснение должно идти здесь.

Ну, как вы думаете, во-первых, получить доступ к локальному диску вашего клиента. Это действительно проблема безопасности. У вас нет доступа к файловой системе вашего клиента, просто так.

Кажется, у вас нет требования делать это. Если вам нужно, по какой-то причудливой причине, вы можете подумать о подписанном апплете или о чем-то другом, я считаю.

Что касается вашей путаницы, то, что она работает на вашем firefox. Это потому, что у вас есть доступ к вашему собственному компьютеру, а для Firefox это просто замечательно. Тем не менее, внутри сервлета, вы не можете просто сделать это. Прочитайте документы для sendRedirect(), там написано

Если местоположение является относительным без ведущий '/' контейнер интерпретирует это относительно текущего запроса URI. Если расположение относительно ведущий '/' контейнер интерпретирует это по отношению к сервлету корень контейнера.

...