여러 탭 간의 sessionStorage를 직접 공유하고 액세스할 수 있나요?

먼저 다음 페이지에서는 sessionStorage가 무엇인지 알아보겠습니다.

1. 현재 페이지 A의 sessionStorage 값은 123입니다. F5로 페이지를 새로고침했는데 sessionStorage 값이 그대로 남아있나요?

대답: 그렇습니다.

2. 페이지 A의 현재 sessionStorage 값은 123입니다. 페이지 A의 주소를 복사하고 브라우저에서 새 TAB 페이지를 열고 해당 주소를 페이지 A에 액세스하기 위해 붙여 넣습니다. sessionStorage 값 123이 여전히 있습니까?

대답: 아니요.

동일한 URL로 여러 탭 페이지를 열면 자체  sessionStorage.

 3. 현재 페이지 A의 sessionStorage 값은 123입니다. 페이지 A의 탭을 닫고 브라우저의 열기 기록 페이지를 사용하여 페이지 A를 복원했습니다. sessionStorage 값이 여전히 있습니까?

대답: 그렇습니다.

페이지 세션은 브라우저가 열려 있는 동안 유지되며, 페이지를 다시 로드하거나 복원하면 원래 페이지 세션이 유지됩니다.

4. 여러 탭 간의 sessionStorage를 직접 공유하고 액세스할 수 있나요?

자, "여러 탭 간의 sessionStorage를 직접 공유하고 액세스할 수 있습니까?"라는 질문으로 돌아가서 단번에 아니오라고 대답하지 마십시오. 이 질문에 대한 답변은 몇 분 정도 걸립니다. 

상황 1: 다른 도메인 이름을 가진 페이지의 sessionStorage를 직접 공유하고 액세스할 수 있습니까?

대답: 아니요.

 시나리오 2: 동일한 도메인 이름을 가진 페이지의 sessionStorage를 직접 공유하고 액세스할 수 있습니까?

여기에는 많은 상황이 있습니다.

다음 A와 B는 모두 동일한 도메인 이름에 속하며 "window.sessionStorage.setItem("This is the first page", "123")"의 sessionStorage 값을 예로 들어 보겠습니다.

1. 페이지 A에서 window.open('./B.html)을 호출하는 버튼을 클릭하여 페이지 B를 엽니다. 페이지 B의 sessionStorage가 페이지 A의 sessionStorage와 동일한 것을 볼 수 있습니다.

태그를 통해 여는 것은 window.open과 동일합니다.

<a href="./B.html" target="_block">这是跳转B页面的a标签</a>

답변: 페이지 B는 페이지 A의 sessionStorage 값에 액세스할 수 있습니다.

 

위 상황은 새로운 질문을 제기합니다. 페이지 B가 페이지 A의 세션 저장 공간을 직접 공유합니까? 아니면 A 페이지의 sessionStorage 복사본을 복사하여 B 페이지에 넣으시겠습니까?

탐색 프로세스: 페이지 A에서 window.sessionStorage.setItem("This is the first page", "456")을 실행하고 sessionStorage 값을 수정합니다. 페이지 A의 sessionStorage가 변경된 것을 확인할 수 있으며, 세션이 페이지 A의 저장 값은 여전히 ​​123이고, window.open을 통해 열린 페이지 B의 세션 저장 값은 여전히 ​​123입니다.

2. 페이지 A에 sessionStorage 값이 있습니다. 페이지 B의 주소를 직접 복사하여 브라우저의 동일한 창에 새 탭 페이지를 생성합니다. 페이지 B의 주소를 입력하고 Enter 키를 눌러 페이지 B를 엽니다.

답변: 페이지 B는 페이지 A에 액세스한 sessionStorage 값을 복사할 수 없습니다.

위의 상황을 바탕으로 다음과 같은 결론을 내립니다.

서로 다른 도메인 이름의 SessionStorage는 공유할 수 없으며, 동일한 도메인 이름의 여러 창 간에 sessionStorage 상태를 공유할 수 없습니다! ! !

그러나 일부 특정 시나리오에서는 이 페이지의 새 탭이나 창으로 열린 동일 출처 페이지가 이전 페이지의 sessionStorage를 복사 합니다. 하지만 이는 복사본일 뿐이므로 A 페이지에서 sessionStorage를 수정하면 A 페이지에서 새 B 페이지를 열지 않는 한 열려 있는 B 페이지의 sessionStorage 값도 그에 따라 업데이트됩니다.

추천

출처blog.csdn.net/tt18473481961/article/details/131569918