'URI arasındaki fark ne.kaçış ve CGI.kaçış? | Netgez.com
SORU
13 Mayıs 2010, PERŞEMBE


'URI arasındaki fark ne.kaçış ve CGI.kaçış?

Farkları ve hangisini kullanmalıyım?

CEVAP
24 EKİM 2012, ÇARŞAMBA


Kullanmam gereken bir balta ve kılıç arasındaki fark nedir? İyibağlıdırne yapmanız gereken.

URI.escape (URL) bir dize kodlamak için, sözde gerekiyordu, "Percent-encoding".

CGI::escape web sunucu ve uygulama arasında veri/kod çözme kodlanmış nasıl olması gerektiğini açıklayan CGI spec, geliyor.

Şimdi, diyelim ki uygulamanızda bir URI kaçmak için ihtiyacınız olduğunu söyleyin. Daha özel bir kullanım durumdur. Bunun için, Ruby toplum yıldır URI.escape kullanılır. URI.escape sorun RFC-3896 spec ele olamazdı.

URI.escape 'http://google.com/foo?bar=at#anchor&title=My Blog & Your Blog' 
# => "http://google.com/foo?bar=at#anchor&title=My Blog & Your Blog"

URI.escape eski olarak iÅŸaretlenmiÅŸ

Ayrıca geçerli bir URI.kodlamak basit gsub. Ama bence bileşenler için bir URI bölünmüş, her bileşenleri kaçış sonra, ve son olarak onlara katılmak.

Geçerli bir URI.kodlamak zararlı ve itiraz kabul edilir. Bu olacak kaldırılacak veya davranış büyük ölçüde değiştirir.

Åžu anda protezi nedir?

Yukarıda, mevcut URİ dediğim gibi.kodlamak spec düzeyde yanlış. Biz bu yüzden tam yedek vermeyecektir. Yerine göre değişir kılıfı kullanın.

http://bugs.ruby-lang.org/issues/show/4167

Ne yazık ki orada değil bir tek kelimeyle ilgili bu dokümanlar, bu konuda kontrol etmek için kaynak, ya da Çalıştır komut ile uyarı ayrıntı düzeyi (-wW2) (ya biraz google-fu).

proposed bazıları ise tüm URI kaçmak imkansızdı, çünkü sorgu parametreleri CGI::Escape kullanmak için:

CGI::escape 'http://google.com/foo?bar=at#anchor&title=My Blog & Your Blog'
# => "http://google.com/foo?bar=at#anchor&title=My Blog & Your Blog"

CGI::escape sorgu parametreleri için kullanılır, ama sonuç yine spec karşı olacak. Aslında en yaygın kullanımı-örnek form verileri, application/x-www-form-urlencoded POST isteği göndermek gibi kaçıyor.

Ayrıca WEBrick::HTTPUtils.escape iyileştirme çok değil bahsedilen (yine sadece olan gsub basit IMO, URI.escape daha kötü bir seçenek bile değil):

WEBrick::HTTPUtils.escape 'http://google.com/foo?bar=at#anchor&title=My Blog & Your Blog'
# => "http://google.com/foo?bar=at#anchor&title=My Blog & Your Blog" 

Spec en yakın Addressable mücevher gibi görünüyor:

require 'addressable/uri'
Addressable::URI.escape 'http://google.com/foo?bar=at#anchor&title=My Blog & Your Blog'
# => "http://google.com/foo?bar=at#anchor&title=My Blog & Your Blog"

Önceki tüm seçenekleri aksine, Adreslenebilir #, kaçış yok ve bu beklenen davranıştır dikkat edin. URI sorgu URİ yolunda değil # karma devam etmek istiyorum.

Tek sorun sol olduğunu bilmiyorduk kaçış sorgu parametreleri düzgün, hangi rüzgar attı bize sonuç: etmemeliyiz kullanın tek bir yöntem için tüm URİ, çünkü orada hiçbir mükemmel bir çözüm (şimdilik). & kaçan olmadı gördüğünüz gibi "Benim Blog Ve Blog". Kullanıcılar URL için özel bir anlamı olan farklı karakterler koyabileceği sorgu parametreler, kaçış için farklı bir biçimde kullanmamız gerekiyor. URL kodlamak girin. Her URL kodlamak için kullanılır "şüpheli", ERB::Util.url_encode ne benzer sorgu değeri:

ERB::Util.url_encode "My Blod & Your Blog"
# => "My Blod & Your Blog""

Sorun deÄŸil ama zaten Adresli gerekli ettik:

uri = Addressable::URI.parse("http://www.go.com/foo")
# => #<Addressable::URI:0x186feb0 URI:http://www.go.com/foo>
uri.query_values = {title: "My Blog & Your Blog"}
uri.normalize.to_s
# => "http://www.go.com/foo?title=My Blog & Your Blog"

Sonuç:

  • URI.escape veya benzeri yok
  • EÄŸer sadece form kaçış gerekiyorsa CGI::escape kullanın
  • EÄŸer deÄŸiÅŸik yöntemleri kullanmak Adreslenebilir ile çalışmanız gerekiyorsa, URL kodlama, kodlama formu ve normalleÅŸtirir URL bulunmaktadır.
  • EÄŸer Raylar bir proje, kontrol ise "How do I URL-escape a string in Rails?"

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • ★ByScrapi★ Designs

    ★ByScrapiâ

    27 AÄžUSTOS 2013
  • MagicofRahat

    MagicofRahat

    13 Temmuz 2007
  • Paulo Bautista

    Paulo Bautis

    21 Aralık 2008