2016-04-02 17 views
0

Bir istekte bulunan bir NodeJS proxy'im var, bazı gizleme yapar ve sonra isteği başka bir sunucuya iletir. Son zamanlarda, sahip olmadığımız başka bir vekil tanıtmak için bir değişiklik yapmamız gerekiyordu ve bu vekilin isteğin çift URL olarak kodlanmasına neden olduğu anlaşılıyor. Geçici bir çözüm olarak, gerektiğinde istek gövdesinin kodunu çözmek istiyorum (bu yeni proxy, bazı ortamlarda değil, bazı ortamlarda mevcut olacaktır). Bunu nasıl yapacağım için etrafa baktım ve 'decodeURIComponent' istediğim şey gibi görünüyor, ama kullanmaya çalıştığımda yanlış biçimlendirilmiş bir istisna alıyorum, bu yüzden yanlış kullanıp kullanmadığımı merak ediyorum. veya bu dava için uygun değil.NodeJS'de bir POST isteğinin kodlanması nasıl yapılır

url kod çözme isteği gövdesine çalışılıyor:

decodeDoubleEncodedBuffer = function(buffer) { 
    var buffString; 
    if (Buffer.isBuffer(buffer)) { 
     buffString = buffer.toString(); 
    } else { 
     buffString = buffer; 
    } 
    if (Config.requireURLDecode) { 
     return new Buffer(decodeURIComponent(buffString)); 
    } else { 
     return new Buffer(buffString); 
    } 
    }; 

...

body = new Buffer(0) 
    req.addListener('data', function(chunk) { 
    return body = Buffer.concat([body, decodeDoubleEncodedBuffer(chunk)]); 
    }); 

aşağıdaki hata olsun Bununla:

return new Buffer(decodeURIComponent(buffString)); 
            ^
    URIError: URI malformed at decodeURIComponent (native) 
    ... 

orijinal dinleyici kodu değiştirilen hangi iyi çalışıyor

body = new Buffer(0); 

req.addListener('data', function(chunk) { 
    return body = Buffer.concat([body, Buffer.isBuffer(chunk) ? chunk : new Buffer(chunk)]); 
}); 

Teşekkürler!

cevap

0

Tamam İki şey farkettim, belki "ben aptal" sayıyorsanız 3. 1) Vücudun içeriği gzipliydi ve fermuarını açmış olsaydı iyi çalıştığım şeyler, 2) urlde WAS'ı çözmek istediğim içerik ve bedende değil ... neden kodlandığını anlamış ilk etapta bir şey. Gövde kodunun yüzde kodlanmış olması için normal olup olmadığını bilmiyorum, ama her iki şekilde de aptalca lol hissediyorum.

Yani, yanıtın, sağladığım kodun geçerli URL karakterleri için uygun olacağını tahmin ediyorum.

İlgili konular