仅获取Node中GET请求的标头

时间:2017-06-26 16:08:43

标签: node.js http get http-headers

我需要使用Node获取大型文件的Content-LengthContent-Type标头。

很遗憾,我处理的服务器不允许HEAD次请求,而且文件太大而无法发出整个GET请求。

我正在寻找类似这个python代码的东西:

import requests

r = requests.get(url, stream=True)
content_length = r.headers['Content-Length']
content_type = r.headers['Content-Type']

stream=True参数表示该文件无法完全下载。

3 个答案:

答案 0 :(得分:1)

如果您使用的是request软件包,则可以执行以下操作:

const request = require('request');
const r = request(url);
r.on('response', response => {
    const contentLength = response.headers['content-length'];
    const contentType = response.headers['content-type'];
    // ...
    r.abort();
});

答案 1 :(得分:1)

nodejs的http库默认情况下不会获取所有内容,但会给回调包含IncomingMessage对象,以构建您必须收听的完整响应.on('data')。

看看:

https://nodejs.org/api/http.html#http_http_get_options_callback

如果您想“忽略”传入的数据,可以调用res.abort()。调用此方法将导致响应中的剩余数据被删除并且套接字将被销毁。

答案 2 :(得分:-1)

使用method: 'HEAD'

http.request('http://example.com', {
    method: 'HEAD',
}, res => {
    console.log(res.statusCode, res.statusMessage)
    console.log(res.headers)

    res.on('data', _ => {
        console.log(`IT SHOULDN'T REACH HERE!`)
    })
}).on('error', console.error)
  .end()