![](/img/trans.png)
[英]how to post data in node.js with content type ='application/x-www-form-urlencoded'
[英]node.js body-parser bad interpretation of Content-Type:x-www-form-urlencoded and Form-data JSON
我有一個客戶要求
Content-type: Content-Type:application/x-www-form-urlencoded; charset=UTF-8
像這樣的Form-Data(json):
{"jsonrpc":"2.0","method":"print","params":{"id":"lp0","doc":"<section>
<p> sitedemo </p><br><barcode> CLODGCGMM
</barcode><br><br><hr><drawer></drawer><br></section>"},"id":1501151330950}
node.js服務器使用主體解析器中間件,如下所示:
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
console.log(request.body)給我這樣的東西:
{ '{"jsonrpc":"2.0","method":"print","params":{"id":"lp0","doc":"<section>
<p>': '',
'nbsp;': '',
'nbsp;sitedemo': '',
'nbsp;':'',
' </p><br><barcode>':''
'.......}'}
構建一個json對象,其中包含由行和值null組成的鍵。
我如何檢索客戶端發送的確切對象(我無法訪問客戶端)
謝謝。
當客戶端在標頭中聲明請求正文已進行URL編碼但正在發送JSON時,客戶端就損壞了。
如果確實是這種情況,則需要防止body-parser
解碼這些請求,並手動進行解碼。
代替這個:
app.use(bodyParser.urlencoded({ extended: true }));
嘗試這個:
app.use(
bodyParser.raw({ type : 'application/x-www-form-urlencoded' }),
function(req, res, next) {
try {
req.body = JSON.parse(req.body)
} catch(e) {
req.body = require('qs').parse(req.body.toString());
}
next();
}
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.