Междоменное локальное хранилище с iframes (Chrome)

Я пытаюсь сохранить значение в другом домене, используя iframe (на самом деле, я использую библиотеку xauth вhttp://xauth.org/info/). Однако когда я пытаюсь сохранить что-либо с помощью Chrome, он возвращается с «QUOTA_EXCEEDED_ERR: DOM Exception 22», который я признаю ошибкой доступа. Я смоделировал пару очень простых страниц ниже, чтобы продублировать эффект:

Файл 1.html:

<html>
<head/>
<iframe src='http://127.0.0.1/2.html' />
</html>

Файл 2.html:

<html>
<head/>
<script>
console.log(localStorage);
localStorage.setItem('test', '123');
</script>
</html>

Если я размещу их на своем локальном сервере и получу доступ к localhost / 1.html, он встраивает кадр из 127.0.0.1 (который Chrome считает отдельным доменом), и я получаю ту же ошибку доступа, что и выше. Предположительно, это выглядит так, как будто я встраиваю iframe из другого домена, а скрипт внутри этого iframe правильно ссылается на localStorage для этого домена (как я вижу в строке console.log (localStorage)), разрешения для записи в localStorage поступают с домена верхней страницы.

Короче говоря, похоже, что ни один iframe не может писать в localStorage в Chrome. Кто-нибудь знает, есть ли способ обойти эту особую функцию безопасности? Или я что-то не так делаю?

 Chris26 мая 2012 г., 00:39
Примечание. Я также проверил свои объекты localStorage как для localhost, так и для 127.0.0.1 и гарантировал, что они пусты, поэтому я точно знаю, что ошибка «Превышена квота» действительно ошибочна; Я, конечно, не превысил квоту 5 МБ.
 Lloyd01 окт. 2012 г., 18:48
ты это решил? Я получаю ту же проблему

Ответы на вопрос(2)

localStorage основана на домене, и нет причин для ошибки вашего примера кода. Что он на самом деле делает, чтобы установитьtest предмет к 123 для 127.0.0.1, тогда как он покинет localhostlocalStorage пусто.

Это, возможно, не ответ на вашу первоначальную проблему QUOTA_EXCEEDED_ERR, но просто попробуйте переключиться на приватный просмотр в Chrome (Ctrl + Shift + N), чтобы увидеть, если у вас все еще есть ошибка. Без дополнительной информации о том, что вы делали изначально, я не могу сказать много, но я считаю, что квота превышена означает, что это значит ...

И я думаю, что квота Chrome составляет 2,5 МБ, в отличие от FF, которая имеет 5 МБ квоты localStorage.

 Chris02 июн. 2012 г., 02:30
Даже в режиме инкогнито я получаю ту же ошибку. Даже если квота Chrome составляет 2,5 МБ, я все равно не смогу приблизиться к этому.
 Chris02 июн. 2012 г., 02:32
Кроме того, проблема в том, что, хотя сценарий должен устанавливать для элемента «test» значение «123», это не так; вместо этого выдает ошибку.
 mmg66612 июн. 2012 г., 00:03
Я проверил ваш код на Chrome без каких-либо проблем, вы смогли выяснить, что происходит с вашим кодом?

когда сторонние куки отключены. Более новые версии Firefox и Opera также блокируют его. В IE и Edge это все еще возможно, хотя сторонние куки отключены. Если localStorage не будет заблокирован в iframe, веб-трекер может просто включить iframe, прочитать cookie, отправить его в родительский скрипт и затем отправить его на сервер.

Причина, по которой это не блокируется в IE и Edge, заключается в том, что эти браузеры позволяют веб-сайтам отправлять сторонние файлы cookie, которые ранее были настроены как собственные файлы cookie, на сервер, хотя сторонние файлы cookie заблокированы. Например, если пользователь посещает Facebook на регулярной основе, он получает первые файлы cookie от Facebook. Когда он затем посещает другие веб-сайты с помощью кнопки «Поделиться» в Facebook, он может отслеживать его, хотя сторонние файлы cookie отключены. Я действительно не знаю, почему IE и Edge не блокируют отправку сторонних файлов cookie, но я бы не стал использовать эти браузеры.

Ошибки, которые браузеры показывают, когда сторонние куки отключены:

Chrome и Opera:Uncaught DOMException: Failed to read the 'localStorage' property from 'Window': Access is denied for this document.

Fire Fox:SecurityError: The operation is insecure.

IE и Edge: ошибки отсутствуют, доступ к localStorage в iframe возможен, хотя сторонние файлы cookie отключены.

Итак, в заключение, невозможно обойти эту функцию безопасности (в Chrome, Firefox, Opera), и это хорошо для обеспечения конфиденциальности пользователей.

Ваш ответ на вопрос