programing tip

하위 도메인에서 localStorage 사용

itbloger 2020. 10. 17. 10:04
반응형

하위 도메인에서 localStorage 사용


쿠키를 지원할 수있는 브라우저 (IE 제외)에서 쿠키를 localStorage로 대체 하고 있습니다. 문제는 site.comwww 입니다. site.com 은 별도의 localStorage 개체를 저장합니다. 나는 www가 하위 도메인으로 간주된다고 생각합니다 (물어 보면 어리석은 결정). 사용자가 원래 site.com에 있었고 www 를 입력하기로 결정한 경우 . site.com 을 방문하면 모든 개인 데이터에 액세스 할 수 없습니다. 모든 "하위 도메인"이 기본 도메인과 동일한 localStorage를 공유하도록하려면 어떻게해야합니까?


이것이 내가 여러 도메인에서 사용하는 방법입니다 ...

  • 상위 도메인의 iframe 사용-parent.com
  • 그런 다음 각 child.com 도메인에서 parent.com iframe에 postMessage를 수행하십시오.
  • 여러분이해야 할 일은 parent.com iframe과 통신하기 위해 postMessage 메시지를 해석하는 방법의 프로토콜을 설정하는 것뿐입니다.

나는 그것이 도움이되기를 바랍니다 :)


이 특정 문제에 대해서만 iframe 및 postMessage 솔루션을 사용하는 경우 하위 도메인이없는 쿠키에 데이터를 저장하는 것이 (코드 및 계산 모두) 덜 작업 할 수 있으며 아직 그렇지 않은 경우 로드시 localStorage에서 쿠키에서 가져옵니다 .

장점 :

  • 추가 iframe 및 postMessage 설정이 필요하지 않습니다.

단점 :

  • www뿐 아니라 모든 하위 도메인에서 데이터를 사용할 수 있으므로 모든 하위 도메인을 신뢰하지 않으면 작동하지 않을 수 있습니다.
  • 각 요청에 대해 데이터를 서버로 보냅니다. 좋지는 않지만 시나리오에 따라 iframe / postMessage 솔루션보다 작업량이 적을 수 있습니다.
  • 이 경우 쿠키를 직접 사용하지 않는 이유는 무엇입니까? 상황에 따라 다릅니다.
  • 도메인의 모든 쿠키에서 총 4K 최대 쿠키 크기 (댓글에서 지적 해 주신 Blake에게 감사드립니다)

나는 다른 주석가들과 동의합니다. 이것은 localStorage에 대한 지정 가능한 옵션이어야하므로 해결 방법이 필요하지 않습니다.


일관성과 이와 같은 문제를 피하기 위해 site.com을 www.site.com으로 리디렉션하는 것이 좋습니다.

또한 각 브라우저 기본 저장소를 사용할 수있는 PersistJS 와 같은 브라우저 간 솔루션 사용을 고려하십시오 .


xdLocalStorage를 사용하고 있는데, 이것은 LocalStorage 인터페이스를 구현하고 iframe 포스트 메시지 통신을 사용하여 도메인 간 스토리지를 지원하는 경량 js 라이브러리입니다. (angularJS 지원)

https://github.com/ofirdagan/cross-domain-local-storage


이것이 내 웹 사이트에서 해결 한 방법입니다. www가없는 모든 페이지를 www.site.com으로 리디렉션했습니다. 이렇게하면 항상 www.site.com의 localstorage가 필요합니다.

루트 디렉토리 .htacess에 다음을 추가하십시오 (아직없는 경우 생성하십시오).

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

document.domain속성을 사용할 수 있습니다 . 이것을 자바 스크립트의 첫 번째 액션에 넣으면 :

document.domain="mysite.com";

참고 URL : https://stackoverflow.com/questions/4026479/use-localstorage-across-subdomains

반응형