SORU
28 Aralık 2009, PAZARTESİ


Ç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
28 Aralık 2009, PAZARTESİ


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • InfoPuppet

    InfoPuppet

    15 Kasım 2011
  • superemposed

    superemposed

    25 Aralık 2007
  • Tek Syndicate

    Tek Syndicat

    23 Temmuz 2008