Çerezler izin verilen karakterler
bu bir incelemesi yapılmış
Hem cookie adı ve değeri izin verilen karakterler nelerdir? URL veya bazı ortak alt kümesi olarak aynı mı?
Neden soruyorum ki Ben ... son darbe bazı garip davranışlar ile kurabiye var -
kendi adını ve ben sadece merak ediyorum eğer bir tarayıcı belirli ya da eğer benim kod hatalı.
CEVAP
Eski Netscape cookie_spec göre:
Bu dize karakterler noktalı virgül, virgül ve boşluk hariç dizisidir.
İma yoluyla =
karakter adı kısmı devre dışı bırakılmış. -
çalışması gerekir, ve burada var tarayıcılar; nerede sorun var sende sorun yok gibi değil mi?
Ne bu belge gelmez unutma ki, çünkü Netscape çok kötüydü yazılı görüşler, kontrol karakterleri (\x00
\x1F
artı \x7F
) izin yok, ve destek için ASCII olmayan karakterler kaldı belirtilmemiş.
Tarayıcılar ne:
- Opera ve Google Chrome, ASCII olmayan karakterler çerez içine kodlanmış UTF-8; ile
- YANİ, makinenin varsayılan kod sayfası (bölgeye özgü ve asla UTF-8) kullanılır;
- Firefox (ve Mozilla tabanlı diğer tarayıcılar) UTF-16 kod noktası üzerinde düşük byte ISO-8859-1 TAMAM ama başka bir şey karıştırılmış () kullanın;
- Safari sadece herhangi bir çerez-ASCII olmayan karakterler içeren göndermeyi reddediyor.
pratikte yapamazsınız ASCII olmayan karakterler çerezleri kullanın. Eğer Unicode kontrol kodları veya diğer rastgele bayt dizileri kullanmak istiyorsanız ad-hoc kendi seçtiğiniz kodlama düzeni kullanmanız gerekir. En çok rağbet URL-kodlama içinde UTF-8-JavaScript tarafından üretilen encodeURIComponent
. ().
Bir Çerez standart için uygun ınternet: RFC2965. Kullanır gibi bu standart çok daha fazla özel karakterler izin verilmez, RFC2616 simgeleri (-
halaorada izin), ve sadece değeri bir dize alıntı diğer karakterler ile belirtilebilir.
Ancak hiçbir tarayıcı içinde bir şey uygular, çünkü bu spec göz ardı edilmelidir. Gerçek dünyada hala orijinal ve en kötü Netscape cookie_spec kullanıyoruz.
Aşağıdaki kurabiye karakter için geçerli olduğunu belirten RFC6265 daha yeni. Çerezler aynı zamanda çift tırnak içinde olması gerekiyor.
Aşağıdaki karakter aralıkları geçerlidir:
%x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E
Hangi eşittir bu
0x21: !
0x23-2B: #$%&'()*
0x2D-3A: -./0123456789:
0x3C-5B: <=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[
0x5D-7E: ]^_`abcdefghijklmnopqrstuvwxyz{|}~
Özellikle bu maddeye göre:
; US-ASCII characters excluding CTLs,
; whitespace, DQUOTE, comma, semicolon,
; and backslash
Birçok olası tarayıcı uygulamaları ile uyumlu olmasını istiyorsanız, son RFC özellikleri izlemeniz önerilir.
A <li>?içinde izin verilen Etike...
Nasıl bir Oracle veritabanı için izin ...
Linux ortam değişkeni adları izin veri...
En büyük TCP/IP ağ bağlantı noktası nu...
Varsayılan sayı tuş takımı ile EditTex...