Вопрос об window.open и cookie

#javascript #browser #cookies

#javascript #браузер #файлы cookie

Вопрос:

Допустим, у меня есть два приложения,www.test.com и sub.test.com , теперь в sub.test.com , Я создаю окно для загрузки www.test.com с помощью таких кодов, как :

 window.open('www.test.com'); 
  

Итак, окно просто всплывает и загружается www.test.com успешно.
Затем я устанавливаю файл cookie в sub.test.com , скажите «uname=wong2;domain=.test.com «, я узнал, что при значении domain=.test.com все сайты с доменом test.com (например www.test.com, aaa.test.com, test.com ) может прочитать файл cookie.

Но когда я пытаюсь загрузить файл cookie из окна, которое просто всплывает сwww.test.com , он не может его получить.

Затем я обнаружил, что если я не использую window.open, а открываю напрямую www.test.com в браузере это работает.

Итак, существуют ли какие-либо ограничения на window.open и cookie?

Комментарии:

1. Не то, чтобы я когда-либо слышал. Вы также указали путь к «/»? И используете ли вы те же номера портов и протокол (http / https)

2. В каких браузерах возникает эта проблема?

Ответ №1:

просто проверьте, как вы установили файл cookie:

 var domain = 'test.com';
var expires = (function(days){
    date = new Date();
    date.setTime(date.getTime()   (days * 24 * 60 * 60 * 1000));
    return date.toUTCString();
})(5);
var name = 'myCookie';
var path = '/';
var value = 'foo';    

document.cookie = name   "="   encodeURIComponent(value)   "; expires="   expires   "; path='"   path   "'; domain="   domain   ";"; 
  

Ответ №2:

Это называется междоменным, и вы не можете установить cookie в одном домене и попытаться получить к нему доступ в другом домене. Браузеры не позволят этого делать.Я думаю, вы можете выполнить это с помощью iframe или политики того же источника или попробовать использовать document.domain Я не уверен, что именно вы хотите сделать.

Комментарии:

1. Файлы cookie могут пересекать домены, если они установлены должным образом, чтобы разрешить это.