JSON-RPC: Canlı Uç Noktaya Karşı Sekiz Uygunluk Kontrolü ve Sekizi de Geçiyor

Bunun neden öne sürmek yerine kontrol edilmeye değer olduğu

JSON-RPC çok küçük bir şartnamedir, ki uygulamaların onu yanlış yapmasının sebebi tam olarak budur: kolay kısımlar bariz ve kenarlar göz ardı ediliyor.

Kenarlar, bir istemci kitaplığının kırıldığı yerdir. "JSON-RPC 2.0 konuşuyoruz", kimsenin elle test etmediği koşullar altındaki davranış hakkında bir iddiadır, dolayısıyla bu sayfa onları test etti.

Sekiz kontrol ve geri gelenler

iki çağrılık bir yığın her iki tanımlayıcı da yankılanmış hâlde iki yanıtlık bir dizi döndürüyor > bir bildirim, tanımlayıcı olmadan gönderilmiş, boş bir gövde döndürüyor > bir dizgi tanımlayıcı bir sayı olarak değil aynı dizgi olarak geri geliyor > sürüm alanı eksik bir istek geçersiz istek ile geri çevriliyor > sürüm bir iddia eden bir istek aynı şekilde geri çevriliyor > çok az parametre geçersiz parametreler ile ve problemi adlandıran bir data alanıyla geri çevriliyor > bozuk bir gövde ayrıştırma hatası ve boş bir tanımlayıcıyla geri çevriliyor > atlanmış parametreler, hiç parametre almayan bir yöntemde basitçe çalışıyor Sekizi de şartnamenin gerektirdiği davranıştır, en sık kaçırılan ikisi dahil: bir bildirim hiçbir yanıt üretmemelidir ve bir ayrıştırma hatası, gerçek olanı okunamadığı için boş bir tanımlayıcı bildirmelidir.

bu dizi, başarılı olması gereken istekleri, adlandırılmış kodlarla başarısız olması gereken isteklerle karıştırıyor. Her şeyi yanıtlayan bir sunucu bunu geçemezdi, her şeyi reddeden bir sunucu da geçemezdi.

Ve HTTP katmanı da doğru

yanlış içerik türüne sahip bir istek geri çevriliyor, yine de ayrıştırılmak yerine bir ön kontrol, izin verilen yöntem ve başlık listelerini döndürüyor, toptan bir cevap değil vary başlığı, yanıtın gerçekten bağlı olduğu istek başlıklarını adlandırıyor düz bir tarayıcı ziyareti, bir protokol hatası yerine okunabilir bir sayfa döndürüyor

Katı içerik türü reddi, anılmaya değer olanıdır. Ayrıştırılabilen her şeyi kabul etmek tembel seçenektir ve bu uç nokta onu geri çeviriyor.

Açık köken politikasının burada neden doğru olduğu

Uç nokta, her kökenden gelen isteklere izin veriyor, ki bu endişe verici görünüyor ve doğrudur.

Her yöntem ya salt okunurdur ya da bir imza gerektiriyor ve bir tarayıcı, sahip olmadığı bir anahtar olmadan o imzayı üretemiyor. Yani açık bir köken politikasının verdiği hiçbir şey yok ve onu kapatmak yalnızca bu uç noktanın hizmet etmek için var olduğu tarayıcı araçlarını bozardı.

Akıl yürütme, ayardan önemlidir. Açık bir politika, köken üzerinden hiçbir şey yetkilendirilmemişken doğrudur ve bir şey yetkilendirildiği anda yanlıştır.

Bu sayfanın atlamayacağı öbür yarı

Uygunluk, sohbetin biçimiyle ilgilidir, içinde ne olduğuyla değil.

Yirmi yöntem sunuluyor. Bunların arasında belge, durum kanıtı, demirleme ve hesaplama kaydı yok ve bu estate'teki birkaç sayfa o duvarda bitiyor.

Ve yineleme yapan herkes için bir tuzak: yüksekliği değil kanonik sırayı kullanın. Zincirlenmiş üç blok tek bir yükseklik değerini paylaşıyor ve arayüzün kendi belgeleri tam olarak bu sebeple sırayı tercih etmeyi söylüyor.

Bir gözlem, bir gözlem olarak kayıtlanmış

Düğüm kendi yerleşik belleğini bildiriyor. Yaklaşık iki saat arayla alınan iki örnek, ikincisinde onu daha yüksek gösteriyor, aralarında çok az blok üretmiş bir zincirde.

Ve bariz çıkarım aritmetikle eleniyor, ki bu kayıttan değerlidir. O farkı sürecin çalışma süresine yaymak, gerçekte bildirdiğinden kat kat büyük bir boyut öngörürdü. Yani bu düzenli bir sızıntı değil. Ya yenidir, ya aralıklıdır, ya da iki farklı aleti karşılaştırmanın bir eseridir.

İki nokta yine de bir eğilim değildir ve dakikalar sonra alınan bir üçüncüsü ihmal edilebilir bir miktarda kımıldadı. Birinin buna saatler yerine günler boyunca bakması için yazıldı, ki bunu çözecek tek şey odur.

Kendiniz neyi kontrol edebilirsiniz

bir bildirim gönderin: id alanı olmayan bir istek

Boş bir gövde almalısınız, boş tanımlayıcılı bir yanıt değil. Sonra iki çağrılık bir yığın gönderin ve geri bir dizi aldığınızı doğrulayın. Bu ikisi, uygunluk taşımayan çoğu sunucuyu tek başına yakalıyor.

Okumaya devam edin

JSON-RPC: Canlı Uç Noktaya Karşı Sekiz Uygunluk Kontrolü ve Sekizi de Geçiyor · Solidus