2009-12-17 5 views
1

tinyurl.com 또는 bit.ly와 같은 URL 단축키를 간단하게 구현하려고합니다. 현재 내 서블릿에서 response.sendRedirect(targetURL)을 수행합니다. http/ftp 대상 URL에서 제대로 작동합니다.URL 단축 : 'file : //'대상 (파일 프로토콜 대상)으로 리디렉션

그러나 file:///c:/temp (여기에서 c:\temp은 물론 로컬/클라이언트 시스템에 있음)과 같은 대상으로 리디렉션하는 데 문제가 있습니다.

Firefox 주소 표시 줄에 file:///c:/temp을 입력해도 작동하지만 서버의 리다이렉션은 아무 것도하지 않는 것 같습니다.

보안상의 이유로 가능하지 않습니까? 아니면 여기서 뭔가 잘못하고있는 걸까요?

미리 감사드립니다.

+0

P. Raj는 제 2의 대답을 받아들이는 것이 좋았습니다. 제가 이것을 묻는 이유는 다른 독자들에게 도움을 제공하기 위해 당신이 받아들이는 대답이 맨 위에 있었기 때문입니다. 따라서이 경우 도움이되는 것은 아닙니다. 이 대답은 다소 즐거움입니다. 감사. –

답변

1

첫 번째 답변의 아름다움을 망치고 싶지는 않습니다. 설명하는 것으로. 그러므로 나는 여기서 설명을해야한다고 결정했다.

글쎄, 처음에는 클라이언트의 로컬 드라이브에 액세스하는 방법을 생각할 수 있습니다. 실제로 보안 문제입니다. 클라이언트 파일 시스템에 액세스 할 권한이 없습니다.

그렇게 할 필요는없는 것으로 보입니다. 만약 당신이 약간의 이유 때문에, 서명 된 애플릿 또는 무엇인가를 생각할 수 있다면, 나는 믿습니다.

당신의 혼란이 간다면, 그것은 당신의 파이어 폭스에서 일하고 있습니다. 그것은 자신의 컴퓨터에 접근 할 수 있고 URL이 firefox가 이해할 수 있기 때문에 가능합니다. 그러나 서블릿 내부에서는 그렇게 할 수 없습니다. 위치는 최고의 '/'용기없는 상대입니다 현재 요청 URI에 상대적으로 을 해석하는 경우 sendRedirect()의 문서를 읽고, 그것은

을 말한다. 위치가 인 상대 경로 인 경우 컨테이너는 선두 문자 '/'를 컨테이너 루트와 비교하여 으로 해석합니다.

+0

고마워요. 그러나 IE에서 '리다이렉션'은 '일부'대상에서 작동합니다. 로컬 디스크 'C : \ foo.doc'로의 리디렉션은 작동하지 않지만 'D : \ foo.doc'- 여기서 'D'는 네트워크 드라이브입니다. – ragebiswas

+0

여기서'D '는 네트워크 드라이브이며 마운트되어 있습니다. 사실 그것은 작동 할 것이고, 왜 그렇게해서는 안된다. IE를 사용하여'C' 드라이브에 접근 할 때의 문제에 대해 확신하지 못합니다. 무슨 메시지를 얻고 있니? –

+0

'Internet Explorer에서 웹 페이지를 표시 할 수 없습니다'오류 – ragebiswas

2

일부 보안에서는 불가능합니다 이유는 무엇입니까? 아니면 내가 뭔가 잘못하고있는 것입니까 여기에 있습니까?

예.

+0

이것은 내가 보아 왔던 청초한 대답이다. nice : –

+0

죄송합니다. Jay. 사장님이 두 번째를 받아달라고 부탁했습니다. :) – ragebiswas