PHP setcookie () для домена, но НЕ для поддоменов - PullRequest
10 голосов
/ 13 сентября 2009

Есть ли способ установить cookie, который не читается на поддоменах? Другими словами, куки должны быть доступны на domain.com, но , а не www.domain.com или xyz.domain.com.

//this is what i'm "intending"...
setcookie($name,$value,$expires,'/','domain.com');
//however, this is how it behaves:
setcookie($name,$value,$expires,'/','.domain.com');

Причина: я настраиваю статический CDN на поддомене и не хочу, чтобы файлы cookie пользовательских сеансов передавались взад и вперед для каждого изображения, файла css, файла js и т. Д.

... я должен вернуться к использованию www.domain.com для моего сайта? Есть ли обходные пути?

Ответы [ 3 ]

17 голосов
/ 13 сентября 2009

Очевидно, что наличие файла cookie на домене «domain.com», соответствующего «* .domain.com», является ожидаемым.

Например: PERSISTENT CLIENT STATE HTTP COOKIES состояние (некоторые выделены мои) :

domain=DOMAIN_NAME

При поиске в списке файлов cookie для действительные куки, сравнение доменные атрибуты куки сделано с интернет-именем домена хост с которого будет URL неправдоподобным. ...
«Подбор хвоста» означает этот атрибут домена совпадает против хвоста полностью квалифицированное доменное имя хоста. A атрибут домена "acme.com" будет сопоставить имена хостов "anvil.acme.com" как а также "shipping.crate.acme.com" .

Только хосты в указанном домене может установить cookie для домена и домены должны иметь как минимум два (2) или три (3) периода в них до запретить домены вида: ".com", ".edu" и "va.us". Любой домен, который не в пределах одного из семи специальных домены верхнего уровня, перечисленные ниже требуется два периода. Любой другой домен требуется как минимум три. Семь специальные домены верхнего уровня: «COM», "EDU", "NET", "ORG", "GOV", "MIL" и "INT".

Итак, вам придется:

  • используйте "www.domain.com" для своего сайта
  • или используйте совершенно другое доменное имя для статического контента (например, ".anotherdomain.com")
    • например, это то, что делается в стеке потока: статический контент подается с sstatic.net
6 голосов
/ 13 сентября 2009

По этой причине довольно много сайтов (включая этот) регистрируют выделенный домен для использования в качестве CDN.

1 голос
/ 13 сентября 2009

Это невозможно, поскольку домен cookie сопоставляется с по отношению к имени домена Вам придется идти с www.

...