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를 통해하지만 전화에서는 추악하고 변덕 스럽습니다 ...
'IT Share you' 카테고리의 다른 글
참조 : MySQL 확장을 사용하는 완벽한 코드 샘플은 무엇입니까? (0) | 2020.12.05 |
---|---|
iPad에서 Javascript 디버깅 (0) | 2020.12.05 |
RSpec 문서… 어디에 숨겨져 있습니까? (0) | 2020.12.05 |
어떤 상황에서 Apache Spark 대신 Dask를 사용할 수 있습니까? (0) | 2020.12.05 |
입력 끝 잭슨 파서로 인해 매핑 할 콘텐츠가 없습니다. (0) | 2020.12.05 |