2009-05-02 37 views
20

URL parametre adlarında hangi karakterlere izin verildiği konusunda herhangi bir resmi kısıtlama var mı?HTTP URL - parametre adlarındaki izin verilen karakterler

RFC3986 ("Tekdüzen Kaynak Tanımlayıcı (URI): Generic Syntax") okudu, ama hiçbir sonuca varılamadı.

Ben pratik sınırlamalar vardır biliyorum, ama aslında böyle bir şey yapmak yasak olacak: sürece ben doğru kaçış olarak

param with\funny<chars>=some_value

: URL'ler için

param%20with%1cfunny%3cchars%3e=some_value

cevap

9

URI özelliklerinde kaçan parametre adları üzerinde herhangi bir kısıtlama yoktur. Ancak, kullandığınız sunucu tarafı yazılımda kısıtlamalar olabilir. URI'ları yorumlamak için “ev yapımı” komut dosyaları kullanırsanız bu özellikle doğrudur.

+0

Bu yüzden soruyorum ki ... http://stackoverflow.com/questions/814613/how-to-read-data-from-url-using-javascript - Sanırım cevabımın bir Olağandışı durumlarda düzeltmek için revizyon. – Tomalak

+0

Ah, bu durumu büyük ölçüde karmaşıklaştırır. Özellikle sınırlayıcı olarak '&' kullanıldığı için sadece bir kongre; diğerleri yerine kullanılabilir, ör. '' 've' '' çok kullanılmıştı. Ayrıca, birçok sunucu motoru (PHP, Rails,…) iç içe geçmiş argümanları destekler, bu yüzden bu, sorgu içeren yasal bir URI olur: http://example.com/?a=b;c[1]=x;c[2] = y… Bir çok web uygulaması, dizi benzeri verileri elde etmek için bu sorgu gösterimini aslında form verileri (seçenekler, onay kutuları…) için kullanıyor. –

+0

Yani, "c [1] = x" bir sunucu tarafı kuralı olduğunu kabul etmeye hazır olmadığınız sürece "parametreleri bir URL'den çıkarmak için tek bir doğru işlev yoktur" anlamına gelir. Arıyorsunuz * aslında "c [1]" olarak adlandırılan istemcide (ki bu aslında doğru, ama sunucu tarafında programlamaya alışkın olanlara garip geliyor ...). – Tomalak

1

Orada saklıdır karakterleri ama kaçtığın sürece (urlencode) o zaman iyi olmalısın.

Kullanılan çerçeveye bağlı olarak, şüpheli değerler göndermeye çalıştığınızda istisnalar alabilirsiniz. ASP.NET, komut dosyaları veya HTML gibi "güvenli olmayan" verileri göndermeye çalışırsanız istisnalar atacak içerik filtrelemesine sahiptir. Bu, URL sözdizimi tarafından zorlanan bir sınırlama veya kural yerine, çerçevenin bir özelliğidir.

4

Ayrıca RFC2396'u da okumalısınız. RFC3986'dan daha bilgilendirici görünüyor.

+1

Bölüm 3.4. ("Query Component") buna sahiptir: "Sorgu bileşeni, kaynak tarafından yorumlanacak bir bilgi dizisidir." Bu, düşündüğüm gibi, "her şey" anlamına gelir. – Tomalak

+0

Maalesef sadece HTTP'ye özgü değil. Ama sanırım burada standart yok, sadece kongre. – Tomalak

İlgili konular