2014-09-21 15 views
0

我從express 3 module multipart收到錯誤{ [Error: unknown transfer-encoding] status: 400 }。這聽起來像TE標題應該發送 - 它不是。但是,我已經讀過這個標頭與發送的content-length標頭不兼容。Express Multipart(Body Parser) - {[Error:unknown transfer-encoding] status:400}

以下頭越來越發送:

{ 
    connection: 'keep-alive', 
    'content-type': 'multipart/form-data; boundary=--------092114122750368', 
    'content-length': '6983', 
    host: '******* ', 
    accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
    'accept-encoding': 'identity', 
    'user-agent': 'Mozilla/3.0 (compatible; Indy Library)' 
} 

任何思考什麼可能會造成這個問題?

EDIT1

服務器代碼如下:

var port = 80, 
    express = require('express'), 
    app; 

app = express(); 

// support JSON, urlencoded, and multipart requests 
app.use(express.json({ 
    limit: '50mb' 
})); 

app.use(express.urlencoded({ 
    limit: '50mb' 
})); 

app.use(express.multipart({ 
    uploadDir:'./uploads', 
    limit: '50mb' 
})); 

app.use(function (err, req, res, next) { 
    console.log(req.headers); 
    console.log(err); 
}); 

顯然有更多的代碼,但是這是錯誤實際發生。 req.header的輸出是我以上提供的JSON格式,{ [Error: unknown transfer-encoding] status: 400 }的輸出在本文的第一行。我最初在每個app.use調用後添加了錯誤回調,但我發現它是導致此問題的express.multipart

+0

你能顯示代碼嗎?錯誤發生在哪裏? – mscdex 2014-09-21 13:59:25

+0

這些是實際發送的頭文件還是您添加的頭文件?如果將任何傳輸編碼應用於消息,則需要在Transfer-Encoding標頭中聲明。 – dfherr 2014-09-21 14:34:22

+0

已添加服務器代碼。標題是所有正在接收的標題 - 不是添加的標題。我不想應用任何傳輸編碼,因爲我不認爲應該有必要,因爲我已經定義了「內容長度」 – 2014-09-21 14:54:11

回答

0

我們必須添加transfer-encoding: chunked,因爲這是數據發送的方式。我們使用的HTTP庫是在content-length屬性中添加的,它與transfer-encoding屬性不兼容,但它不會導致服務器出現問題,所以這就是我們解決的問題。

相關問題