Node.js 在通过 HTTPS 服务时切断文件

标签 node.js

我正在尝试使用 Node.js 提供一些 JavaScript 文件,但无论出于何种原因,这些文件在传输过程中被切断了。代码:

httpsServer = http.createServer(function(req, res) {
    var path = url.parse(req.url).pathname;

    if (path[path.length - 1] == '/') {
            path += 'index.html';
    }

    fs.readFile(root + path, function(err, data){
            if (err) return send404(res);

            res.writeHead(200, {
                'Content-Type': getMimeType(getExtension(path)),
                'Content-Length': data.length});
            res.end(data);

    });
}),

var privateKey = fs.readFileSync(settings.PRIVATE_KEY).toString();
var certificate = fs.readFileSync(settings.CERTIFICATE).toString();

var credentials = crypto.createCredentials({key: privateKey, cert: certificate});
httpsServer.setSecure(credentials);
httpsServer.listen(settings.HTTPS_PORT);

文件 http://github.com/LearnBoost/Socket.IO/raw/master/socket.io.jshttp://code.jquery.com/jquery-1.4.2.min.js .第一个恰好在 32KB 处截断,第二个恰好在 16KB 处截断。这不会发生在 HTTP 上,只会发生在 HTTPS 上,并且只会发生在网络上(例如:不是来自本地主机)。

非常感谢任何帮助。

最佳答案

你应该使用 Content-Length: Buffer.byteLength(data, 'utf8') 而不是 Content-Length: data.length 其中 Buffer 是全局对象( Node 0.3.x)或 Node 0.2.x 中的 var Buffer = require('buffer') 这将为您省去很多麻烦,并可能通过截断的答案解决您的问题也是。

关于Node.js 在通过 HTTPS 服务时切断文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3905473/

相关文章:

node.js - 网易的Pomelo用的是Udp还是Tcp?

ios - react native 错误 - react-native-xcode.sh : line 45: react-native: command not found Command/bin/sh failed with exit code 127

node.js - 在expressjs中提供应用程序时,Angular应用程序导航不适用

node.js - 在浏览器中使用 Electron 代码

javascript - 表达错误 [ERR_HTTP_HEADERS_SENT] : Cannot set headers after they are sent to the client

node.js - Node 失败退出代码 1

javascript - node_modules 不被识别为内部或外部命令

javascript - MongoDB/NodeJS 查询从字典中获取数据

node.js - Sequelize插入连接表(多对多)

node.js - Node : Passing function to a Promise