Это ограничение архитектуры no-www? : - PullRequest
3 голосов
/ 19 сентября 2011

Если я принадлежу к no-www camp , куки, которые я установил в http://example.com, будут прочитаны http://sub-domain.example.com,

И независимо от того, какой язык я использую (perl / asp.net / php / JSP), нет способа Я мог бы обойти эту проблему, потому что это фундаментальная архитектура самого HTTP, true или false ?

Что меня беспокоит, так это то, есть ли конфигурация DNS, которая помешает http://sub-domain.example.com читать файлы cookie, установленные в http://example.com?

У меня есть доменное имя http://qweop.com

У меня есть поддомен на http://sd.qweop.com

Теперь проблема в том, что, хотя я не установил куки на http://sd.qweop.com, когда я читаю куки, там есть куки. Они читают куки от http://qweop.com.

Как исправить проблему, чтобы куки из основного домена не были прочитаны (запросом) субдомена?

Я пытался изменить 5-й параметр функции php setcookie , но она, похоже, ничего не делает. По сути, этот параметр бесполезен. Я подозреваю, что это ограничение инфраструктуры HTTP.

ОПИСАНИЕ:

http://qweop.com/set.php (попробуйте использовать инкогнито, чтобы облегчить удаление файлов cookie)

<?php setcookie("testcookie","testvalue",time()+60*60*24*30,"/","qweop.com");?>
cookies set

http://sd.qweop.com/read.php

<?php print_r($_COOKIE); ?>
// No one had set any cookies in http://sd.qweop.com but we can see cookies here! Error!

Ответ: Да

Мне лучше каталогизировать ответ после 500 часов исследований в Google.

По сути, мы всегда должны использовать www, если мы планируем использовать любые другие поддомены и хотим, чтобы они не содержали cookie. Это связано с тем, что в отношении файлов cookie верхнего уровня используются разные варианты поведения браузера .

Мы можем изо всех сил сказать браузеру «Эй, он настроен только на домен, а не на его субдомены», но пока URL-адрес не-www, они не будут хорошими и будут вести себя так, как мы хочу их.

На самом деле, даже если URL не не-www, они все равно могут делать все, что они захотят , в настоящее время нет записей ни о каком браузере, который делает это (и, скорее всего, так же и в будущее).

Ответы [ 2 ]

2 голосов
/ 19 сентября 2011

Я верю, что вы ничего не можете с этим поделать. Вы можете попытаться установить cookie как:

setcookie('some_name', 'some_val', 0, '/', 'yourdomain');

, но он будет установлен для всех поддоменов yourdomain, хотя RFC 2109 говорит, что если файл cookie соответствует поддоменам, он должен быть установлен с точкой как .yourdomain. Все основные браузеры отправляют его на поддомен. Я проверял это с IE, FF и Chrome.

0 голосов
/ 20 сентября 2011

К сожалению, DNS-конфигурация не имеет абсолютно никакого отношения к cookie-файлам (конечно, если они принадлежат одному домену 2-го уровня).

Вы все равно можете получить практический ответ, если зададите практический вопрос.

...