2009-12-17 20 views
1

J'essaie une implémentation simple d'un raccourcisseur d'URL tel que tinyurl.com ou bit.ly. Actuellement, je fais un response.sendRedirect(targetURL) dans mon servlet - qui fonctionne très bien pour les URL cibles http/ftp.Abréviation d'URL: redirection vers une cible 'file: //' (cible de protocole de fichier)

Cependant, j'ai des problèmes de redirection vers des cibles telles que file:///c:/temp (où c:\temp est bien sûr sur le système local/client).

La frappe file:///c:/temp dans la barre d'adresse de Firefox fonctionne, mais une redirection d'un serveur semble ne rien faire.

N'est-ce pas possible pour des raisons de sécurité? Ou est-ce que je fais quelque chose de mal ici?

Merci d'avance!

+0

P.S. Raj est bien d'accepter ma deuxième réponse, car elle explique mieux la chose. La raison pour laquelle je pose cette question, c'est parce que la réponse que vous acceptez avait l'habitude de coller au sommet afin de fournir de l'aide à d'autres lecteurs. Donc, dans ce cas, cela ne fournira rien d'utile. Cette réponse est pour un peu d'amusement. Merci. –

Répondre

1

Je ne veux pas ruiner la beauté de ma première réponse, en expliquant la chose. Par conséquent, j'ai décidé, l'explication devrait aller ici, à la place.

Eh bien, comment pouvez-vous penser à accéder à un lecteur local de votre client, en premier lieu. C'est un problème de sécurité, en effet. Vous n'avez pas accès au système de fichiers de votre client, juste comme ça.

Il semble que vous n'ayez pas besoin de faire cela. Si vous devez, pour une raison quelconque, alors vous pouvez penser à une applet signée ou quelque chose, je crois.

En ce qui concerne votre confusion, cela fonctionne sur votre firefox. C'est parce que vous avez l'accès à votre propre machine et l'URL est très bien pour que Firefox puisse comprendre. Cependant, à l'intérieur d'une servlet, vous ne pouvez pas faire cela. Lisez la documentation pour sendRedirect(), il dit

Si l'emplacement est relatif sans premier «/» le conteneur interprète comme par rapport à la demande actuelle URI . Si l'emplacement est relatif à , un '/' principal interprète comme relatif à la racine du conteneur .

+0

Merci - cela a du sens. Toutefois, dans IE - redirection fonctionne pour 'certaines' cibles. Les redirections vers le disque local 'C: \ foo.doc' ne semblent pas fonctionner, mais 'D: \ foo.doc' le fait - où 'D' est un lecteur réseau. – ragebiswas

+0

Où 'D' est le lecteur réseau et il est monté. En effet, cela fonctionnerait, pourquoi cela ne devrait pas. Vous n'êtes pas sûr du problème d'accès à votre lecteur 'C' en utilisant IE. Quel message obtenez-vous, BTW? –

+0

L'erreur 'Internet Explorer ne peut pas afficher la page Web' – ragebiswas

2

Est-ce que ce n'est pas possible pour certaines raisons de sécurité ? Ou est-ce que je fais quelque chose de mal ici?

Oui.

+0

C'est la réponse la mieux acceptée que j'ai jamais vue, agréable: –

+0

Sorry Jay. Le patron m'a demandé d'accepter la seconde :) – ragebiswas