IT Share you

HTML5 데이터베이스와 localStorage를 하위 도메인간에 공유 할 수 있습니까?

shareyou 2020. 12. 5. 10:55
반응형

HTML5 데이터베이스와 localStorage를 하위 도메인간에 공유 할 수 있습니까?


Safari를 사용하여 하위 도메인간에 데이터를 공유하려고합니다. HTML5 데이터베이스를 사용하고 싶습니다 (특히 내 데이터는 키-값 쌍에 불과하므로 localStorage ). 그러나 domain.com에 저장된 데이터 sub.domain.com 에서 액세스 할 수 없거나 그 반대 인 것처럼 보입니다 . 이 상황에서 단일 데이터베이스를 공유 할 수있는 방법이 있습니까?


2016 업데이트

Zendesk 의이 라이브러리 가 저에게 효과적이었습니다.

견본:

바퀴통

// Config s.t. subdomains can get, but only the root domain can set and del
CrossStorageHub.init([
  {origin: /\.example.com$/,            allow: ['get']},
  {origin: /:\/\/(www\.)?example.com$/, allow: ['get', 'set', 'del']}
]);

$문자열의 끝과 일치하는 것에 유의하십시오 . 위 예제의 정규식은와 같은 출처와 일치 valid.example.com하지만 invalid.example.com.malicious.com.

고객

var storage = new CrossStorageClient('https://store.example.com/hub.html');

storage.onConnect().then(function() {
  return storage.set('newKey', 'foobar');
}).then(function() {
  return storage.get('existingKey', 'newKey');
}).then(function(res) {
  console.log(res.length); // 2
}).catch(function(err) {
  // Handle error
});

https://stackoverflow.com/a/39788742/5064633 확인


교차 도메인을 사용하는 간단한 방법이 있습니다. 액세스하려는 도메인에서 호스팅 되는 프록시 iframe 으로 포함될 간단한 페이지를 만들고 해당 iframe에 PostMessage보내고 iframe 내부에서 LocalStorage 데이터베이스 조작을 수행하십시오. 다음은 lcoalStorage로이를 수행 하는 기사 링크 입니다. 그리고 여기 하위 도메인의 다른 페이지로 메시지를 보내는 데모 는 소스 코드를 확인하고 iframe과 PostMessage를 사용합니다.

편집 : 새 버전의 sysend.js 라이브러리 (위 데모에서 사용됨)는 브라우저가 지원하는 경우 BroadcastChannel을 사용하지만 여전히 Iframe이 필요합니다. 최신 버전은 Cross-Origin 메시지 사용을 단순화하고, 저장소에 iframe의 html을 가지고 있으며, 사용할 수 있으며 (또는 lib와 함께 단일 스크립트 태그가있는 간단한 html 파일을 사용할 수 있음) 부모에서 하나의 함수를 호출하면됩니다. sysend.proxy('https://example.com');example.com에는 proxy.html파일 이 있어야 합니다 (자신의 파일 이름과 다른 경로를 사용할 수도 있음).


Google 크롬은 타사 쿠키가 활성화되어 있지 않는 한 기본적으로 다른 도메인의 iFrame에서 localStoage 액세스를 차단하고 iPhone의 Safari도 마찬가지입니다 ... 유일한 해결책은 다른 도메인에서 상위 도메인을 연 다음 자녀에게 보내는 것 같습니다. window.postMessage를 통해하지만 전화에서는 추악하고 변덕 스럽습니다 ...

참고 URL : https://stackoverflow.com/questions/4177803/can-html5-databases-and-localstorage-be-shared-across-subdomains

반응형