답변:
document.referrer
주소 표시 줄에 직접 입력하거나 양식을 제출하여 링크를 클릭하여 링크를 클릭하여 현재 페이지에 도착한 경우 사용자가 마지막으로 방문한 페이지의 URL을 얻을 수있는 경우가 많습니다. DOM 레벨 2에 의해 지정됩니다 . 여기 더 있습니다.
window.history보안 및 개인 정보 보호를 위해 탐색을 허용하지만 세션의 URL에 액세스 할 수 없습니다. 보다 자세한 URL 기록을 사용할 수 있으면 방문한 모든 사이트에서 다른 모든 사이트를 볼 수 있습니다.
자신의 사이트를 돌아 다니는 상태를 다루는 경우 쿠키 데이터, URL 매개 변수 또는 서버 측 세션 정보와 같은 정상적인 세션 관리 기술 중 하나를 사용하는 것이 덜 취약하고 확실히 유용합니다.
document.referrer항상 작동하지는 않습니다. $.cookie("previousUrl", window.location.href, {path:"/"});.
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 일뿐 아니라 리퍼러 창 스펙이기도합니다. 적어도 이것이 현재로서는 이해할 수있는 최선의 방법입니다.
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이 다른 웹 사이트이거나 세션이 정리되었거나 방금 생성 된 (처음 웹 사이트로드) 인스턴스에서는 사용할 수 없으므로이 방법으로 참조 쿠키가 항상 존재한다고 가정하지 마십시오.