문제

나는 JSP/Servlet을 작성하고 있으며 URI의 앵커 부분을 얻으려고 노력하고 있습니다.

blabla.rdf#mark

내 요청에서 내 마크를 어떻게 얻습니까? 확실히 request.getParameter() 작동하지 않습니까?

모든 도움을 환영합니다.

도움이 되었습니까?

해결책

클라이언트가 "앵커 부품"을 서버로 보내지 않기 때문에 불가능합니다.

예를 들어, 제출 후 Chrome이 생성 한 정확한 요청은 다음과 같습니다. http://example.com/#foobar (Wireshark를 사용하여 녹음) :

GET / HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.3 (KHTML, like Gecko) Chrome/4.0.223.11 Safari/532.3
Cache-Control: max-age=0
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
If-None-Match: "b300b4-1b6-4059a80bfd280"
If-Modified-Since: Tue, 15 Nov 2005 13:24:10 GMT

#foobar가 없습니다. 따라서 서버 응용 프로그램이 읽을 수있는 방법은 없습니다.

쿠키 또는 숨겨진 입력 필드 또는 부두에 앵커를 저장하기 위해 JavaScript 마법을 할 수 있습니다. 그러나 자신의 사이트에서 유래하지 않는 요청에는 효과가 없습니다. 쿼리 문자열의 서버 부분에서 필요한 모든 것을 만들고 JavaScript 전용 작업에만 앵커를 사용하거나 간단한 HTML 문서를 탐색하는 데 사용하는 것이 더 간단하지만 90 년대입니다.).

언급 된 RFC 1808의 중요한 부분은 다음과 같습니다.

조각 식별자 (및 그 앞에있는 "#")는 URL의 일부로 간주되지 않습니다. 그러나 URL과 동일한 문자열 컨텍스트 내에서 일반적으로 사용되므로 파서는 파편이 존재할 때 파편을 인식하고 구문 분석 프로세스의 일부로 따로 설정할 수 있어야합니다.

다른 팁

나는 당신이 북마크 가능한 Ajax 웹 응용 프로그램을 만들고 싶다고 생각하며 전체 페이지를 다시로드하지 않고 DOM의 특정 조각을 교체하려고합니다. (그렇지 않으면 쿼리 매개 변수를 사용할 수 있습니다.) sfussenegger 언급, 브라우저는 전송하지 않습니다.'서버로. 솔루션은 클라이언트 측에 있습니다.

자바 스크립트 window.location.hash 앵커 정보를 제공합니다. 이벤트 처리기를 추가 할 수 있습니다 window.onload 잡는 이벤트 window.location.hash ajax xhttprequest에서 서버로 전송합니다. 당신은 응답을 잡고 그것을 DOM으로 작성합니다.

불행히도, 그것은 두 개의 클라이언트 서버 왕복입니다.

이것에 대한 자세한 내용 Ajaxpatterns.

이 솔루션은 만 작동합니다 ~ 후에 제출 버튼이 푸시되었지만 : JavaScript를 사용하여 문서 값으로 설정된 양식에 숨겨진 값을 배치 할 수 있습니다. 그것은 브라우저가 주소로보고있는 것을 정확히 알려줄 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top