클라이언트 측 (javascript)에서 windows.location.hash를 사용할 수 있지만 서버 측에서 액세스 할 수는 없습니다.
클라이언트 측 (javascript)에서 windows.location.hash를 사용할 수 있지만 서버 측에서 액세스 할 수는 없습니다.
답변:
ASP.Net 포스트 백에서 URL 해시를 유지해야하는 상황이있었습니다. 브라우저는 기본적으로 해시를 서버로 보내지 않으므로이를 수행하는 유일한 방법은 일부 Javascript를 사용하는 것입니다.
양식이 제출되면 해시 ( window.location.hash
)를 잡고 서버 측 숨겨진 입력 필드에 저장 ID를 " urlhash
" 로 DIV에 저장하여 나중에 쉽게 찾을 수 있도록하십시오.
서버 에서이 값을 사용해야 할 경우이 값을 사용할 수 있습니다. 필요한 경우 변경할 수도 있습니다.
클라이언트의 페이지로드 시이 숨겨진 필드의 값을 확인하십시오. 자동 생성 된 ID를 알 수 없으므로 포함 된 DIV에서 찾을 수 있습니다. 예, .ClientID로 약간의 속임수를 쓸 수는 있지만 래퍼 DIV를 사용하는 것이 더 간단하다는 것을 알았습니다.이 모든 Javascript가 외부 파일에 살고 일반적인 방식으로 사용될 수 있기 때문입니다.
숨겨진 입력 필드에 유효한 값이 있으면 해당 값을 URL 해시 ( window.location.hash again
) 로 설정 하거나 다른 조치를 수행하십시오.
우리는 필드 선택 등을 단순화하기 위해 jQuery를 사용했습니다. 모두 jQuery 호출, 값 저장 및 복원을위한 몇 가지 jQuery 호출로 끝났습니다.
제출하기 전에 :
$("form").submit(function() {
$("input", "#urlhash").val(window.location.hash);
});
페이지로드시 :
var hashVal = $("input", "#urlhash").val();
if (IsHashValid(hashVal)) {
window.location.hash = hashVal;
}
IsHashValid()
" undefined
"또는 처리하고 싶지 않은 다른 것들을 확인할 수 있습니다.
또한 $(document).ready()
물론 적절하게 사용하십시오 .
RFC 2396 섹션 4.1 :
URI 참조가 식별 된 자원에서 검색 조치를 수행하는 데 사용되는 경우, 크로스 해치 ( "#") 문자로 URI와 분리 된 선택적 단편 ID 는 검색 후 사용자 에이전트가 해석 할 추가 참조 정보 로 구성됩니다. 작업이 성공적으로 완료되었습니다 . 따라서 URI의 일부는 아니지만 종종 URI와 함께 사용됩니다.
(강조 추가)
아마도 유일한 선택은 클라이언트 쪽에서 읽고 서버로 수동 전송하는 것입니다 (GET / POST / AJAX). Artur 감사합니다
Malcan에서 뒤로 버튼과 브라우저 기록으로 재생하는 방법도 볼 수 있습니다
GET 요청에 대한 가능한 솔루션 :
새로운 링크 형식 : http://example.com/yourDirectory?hash=video01
컨트롤러 또는 위쪽으로이 함수를 호출 http://example.com/yourDirectory/index.php
:
function redirect()
{
if (!empty($_GET['hash'])) {
/** Sanitize & Validate $_GET['hash']
If valid return string
If invalid: return empty or false
******************************************************/
$validHash = sanitizeAndValidateHashFunction($_GET['hash']);
if (!empty($validHash)) {
$url = './#' . $validHash;
} else {
$url = '/your404page.php';
}
header("Location: $url");
}
}