복붙노트

URL의 해시 부분이 서버 측에서 사용할 수없는 이유는 무엇입니까?

PHP

URL의 해시 부분이 서버 측에서 사용할 수없는 이유는 무엇입니까?

예를 들어 URL을 입력하는 경우 :

http://www.foo.com/page.php?parameter=kickme#MOREURL

그런 다음 서버에는 아무 것도 없습니다. #MOREURL

jQuery AJAX없이 서버로 보내거나 가져올 수 있습니까?

해결법

  1. ==============================

    1.아니, 브라우저에서만 사용할 수 있으므로 Javascript로 처리해야합니다. 서버에서 읽을 수 없습니다.

    아니, 브라우저에서만 사용할 수 있으므로 Javascript로 처리해야합니다. 서버에서 읽을 수 없습니다.

    설명: 기본적으로 페이지 URL의 해시 구성 요소 (# 기호 다음 부분)는 브라우저에서만 처리되며 브라우저는 서버로 전달하지 않습니다. 이것은 슬프게도 HTML 표준의 일부이며, IE 나 다른 브라우저 (그리고 PHP 또는 다른 서버 측 기술과 관련이 있는지 여부)와 상관없이 동일합니다.

    위키 피 디아가 그것에 대해 말한 내용은 다음과 같습니다.

  2. ==============================

    2.http://tools.ietf.org/html/rfc2396#section-4

    http://tools.ietf.org/html/rfc2396#section-4

  3. ==============================

    3.브라우저가 기본적으로 해시를 서버에 보내지 않으므로 수행 할 수있는 유일한 방법은 일부 자바 스크립트를 사용하는 것입니다.

    브라우저가 기본적으로 해시를 서버에 보내지 않으므로 수행 할 수있는 유일한 방법은 일부 자바 스크립트를 사용하는 것입니다.

    우리는 jQuery를 사용하여 필드 선택 등을 단순화했습니다. 모두 jQuery 호출이 몇 개 있었고, 하나는 값을 저장하고 다른 하나는 복원했습니다.

    제출하기 전에 :

    $("form").submit(function() {
      $("input", "#urlhash").val(window.location.hash);
    });
    

    페이지로드시 :

    var hashVal = $("input", "#urlhash").val();
    if (IsHashValid(hashVal)) {
      window.location.hash = hashVal;
    }
    

    IsHashValid ()는 "정의되지 않은"또는 처리하고 싶지 않은 다른 항목을 확인할 수 있습니다.

    물론 $ (document) .ready ()를 적절하게 사용해야합니다.

  4. ==============================

    4.조각이 서버로 전송되지 않는 이유에 대한 대답을 확장하고 싶습니다. 그것은 의도적이고 바람직한 행동이기 때문입니다. 전체 URL 문자열을 살펴 보겠습니다.

    조각이 서버로 전송되지 않는 이유에 대한 대답을 확장하고 싶습니다. 그것은 의도적이고 바람직한 행동이기 때문입니다. 전체 URL 문자열을 살펴 보겠습니다.

    / path / to / element? query = 문자열 = 서버 #? 선택 사항 = 부분 = 브라우저 <----- URL ----> <---- QUERY STRING ---> <----- 프래그먼트 문자열 ------>

    URI는 서버에서 가져온 리소스를 고유하게 지정합니다.

    QUERY는 자원에서 서버가 수행 할 조작을 정의합니다.

    FRAGMENT는 브라우저 (응용 프로그램) 동작을 제어합니다. 단편을 사용하여 사용자에게 표시되어야하는 응용 프로그램 상태를 저장하여 사용자가 다른 사용자에게 링크를 보내어 동일한 응용 프로그램 상태를 가져올 수 있도록합니다.

    조각은 단일 페이지 웹 응용 프로그램 (예 : 휴대 전화에서 오프라인으로 실행할 수 있음)을 투명하게 구현할 수있는 URL의 유일한 부분입니다. 따라서 서버로 전송하면 안됩니다.

  5. from https://stackoverflow.com/questions/3664257/why-is-the-hash-part-of-the-url-not-available-on-the-server-side by cc-by-sa and MIT license