PHP farklı alt etki altında http ve https site için çerez Ayarı

3 Cevap php

Durum:

  1. Ben bir etki secure.example.com altında https mağaza (xcart) çalıştırmak çalışıyorum ve bunu http setleri bir çerez erişmesini istediğiniz www.example.com
  2. Ben Firecookie ile Firefox'ta test, Apache (MAMP) üzerinde PHP koşuyorum
  3. Varolan kodu .secure.example.com için çerez ayarlar. Ben bu xcart ilgili ise emin değilim, ama setcookie aslında secure.example.com kullanılarak denir. Ben "." eklenir neden emin değilim.

Sorunlar:

  1. I .example.com ya da sadece example.com alanı kullanmak için setcookie https olarak kullanmaya çalıştığınızda, hiçbir çerez ben http altında mağaza çalışan veya kulüpler olsun, oluşturulan https. Ben kullanıyorum test kodu:

    setcookie('three', 'two', 0, "/", ".example.com");
    

I secure.example.com veya çerez ayarlarsanız .secure.example.com o kadar göstermektedir.

Çerez gösterilmesini bir nedeni var mı?

3 Cevap

Sorun bir tek kelime etki, 'etkialanim', nedense orijinal mesajın dışında düzenlenmiş bir gerçeği ile localhost kullanıyor olmasıydı. En azından firefox açıkça ayarlanmış bir çerez için en az iki kelime, mydomain.local gibi bir şey gerektirir. Ben etki için hosts dosyasını değişti: www.mydomain.local ve secure.mydomain.local ve ben çerezleri ayarlamak için mydomain.local başardı..

Ayrıca ben php otomatik olarak "." Koyar bulundu açıkça çerezler önünde.

Evet - ama politika tarayıcı tarafından belirlenir (ve bazı tarayıcılarda yapılveırılabilir).

Öncelediği IIRC semantik. Stveart kurabiye için cooke RFC'lerde (2109 açıklanmıştır devletler:

A is a FQDN string ve has the form NB, where N is a non-empty name string, B has the form .B', ve B' is a FQDN string. (So, x.y.com domain-matches .y.com but not y.com.)

Hangi Ben bir joker maç olarak kullanılmak üzere tasarlanmış bir setcookie yönergesinde bir domian bir öncesinde gerektiği anlamında yorumlamak istiyorum '.' . yani example.com - ancak spec söylemeye devam ediyor:

Domain=domain Optional. The Domain attribute specifies the domain for which the cookie is valid. An explicitly specified domain must always start with a dot.

Bana Hangi tersini ima eder.

Seni read it Kendinizi ve deney öneririz.

Bariz pratik çözüm geri başka bir sorgu dizesinde çerez detayları ile menşeli sunucuya yönlendirmek geri göndermek daha sonra çerez kontrol etmek için çerez ayarı sunucunuza yönlendirmek için uygun bir çerez yokluğunda, daha sonra bir kopyasını bırakın Geçerli sunucu ile ilişkili çerez.

Alternatif olarak daha bölümleri ile FQDN kullanarak dışında bazı kilometre alabilirsiniz, örneğin

secure.www.example.com

ve

www.example.com

(Için çerez bırakarak [.] Www.example.com)

HTH

C.

Denemek mi setcookie('three', 'two', 0, "/", ".mydomain.com");?