[javascript] JavaScript에서 이전 URL을 얻는 방법은 무엇입니까?

JavaScript에서 이전 URL을 얻는 방법이 있습니까? 이 같은:

alert("previous url is: " + window.history.previous.href);

그런게 있습니까? 아니면 그냥 쿠키에 저장해야합니까? 앵커와 그 모든 것없이 이전 URL에서 현재 URL로 전환 할 수 있도록 알아야합니다.



답변

document.referrer

주소 표시 줄에 직접 입력하거나 양식을 제출하여 링크를 클릭하여 링크를 클릭하여 현재 페이지에 도착한 경우 사용자가 마지막으로 방문한 페이지의 URL을 얻을 수있는 경우가 많습니다. DOM 레벨 2에 의해 지정됩니다 . 여기 더 있습니다.

window.history보안 및 개인 정보 보호를 위해 탐색을 허용하지만 세션의 URL에 액세스 할 수 없습니다. 보다 자세한 URL 기록을 사용할 수 있으면 방문한 모든 사이트에서 다른 모든 사이트를 볼 수 있습니다.

자신의 사이트를 돌아 다니는 상태를 다루는 경우 쿠키 데이터, URL 매개 변수 또는 서버 측 세션 정보와 같은 정상적인 세션 관리 기술 중 하나를 사용하는 것이 덜 취약하고 확실히 유용합니다.


답변

URL을 모르고 이전 페이지로 이동하려면 새로운 History API를 사용할 수 있습니다.

history.back(); //Go to the previous page
history.forward(); //Go to the next page in the stack
history.go(index); //Where index could be 1, -1, 56, etc.

그러나 HTML5 History API를 지원하지 않는 브라우저에서 히스토리 스택의 컨텐츠를 조작 할 수 없습니다

자세한 내용은 문서를 참조하십시오


답변

document.referrer 모든 상황에서 실제 URL과 동일하지는 않습니다.

2 프레임으로 프레임 세트를 설정 해야하는 응용 프로그램이 있습니다. 한 프레임은 알려져 있고 다른 프레임은 내가 연결하고있는 페이지입니다. 그것은 것으로 보인다 document.referrer는 프레임 문서에 실제 파일 이름을 전달하지 않기 때문에 것이 이상적입니다.

그러나 나중에 맨 아래 프레임 페이지를 변경 한 다음 사용 history.back()하면 원본 페이지가 맨 아래 프레임으로로드되지 않고 다시로드 document.referrer되고 결과적으로 프레임 세트가 사라지고 원래 시작 창으로 돌아갑니다.

이것을 이해하는 데 조금 시간이 걸렸습니다. 따라서 히스토리 배열에서 document.referrerURL 일뿐 아니라 리퍼러 창 스펙이기도합니다. 적어도 이것이 현재로서는 이해할 수있는 최선의 방법입니다.


답변

서버로의 왕복이 아닌 앱 / 브라우저에서 라우팅이 이루어지는 웹앱 또는 단일 페이지 애플리케이션 (SPA)을 작성하는 경우 다음을 수행 할 수 있습니다.

window.history.pushState({ prevUrl: window.location.href }, null, "/new/path/in/your/app")

그런 다음 새 경로에서 다음을 수행하여 이전 URL을 검색 할 수 있습니다.

window.history.state.prevUrl // your previous url


답변

Node.js 및 Express를 사용하는 사용자는 현재 페이지 URL을 기억하는 세션 쿠키를 설정할 수 있으므로 다음 페이지로드시 리퍼러를 확인할 수 있습니다. express-session미들웨어 를 사용하는 예는 다음과 같습니다 .

//Add me after the express-session middleware    
app.use((req, res, next) => {
    req.session.referrer = req.protocol + '://' + req.get('host') + req.originalUrl;
    next();
});

그런 다음 리퍼러 쿠키가 있는지 확인할 수 있습니다.

if ( req.session.referrer ) console.log(req.session.referrer);

이전 URL이 다른 웹 사이트이거나 세션이 정리되었거나 방금 생성 된 (처음 웹 사이트로드) 인스턴스에서는 사용할 수 없으므로이 방법으로 참조 쿠키가 항상 존재한다고 가정하지 마십시오.


답변

<script type="text/javascript">
    document.write(document.referrer);
</script>

document.referrer IE9 이전의 Internet Explorer 버전에서는 작동하지 않습니다.

Chrome, Mozilla, Opera, Safari 등과 같은 다른 인기있는 브라우저에서 작동합니다.


답변

이전에 방문한 URL로 이동합니다.

javascript:history.go(-1)