忽略Node中HTTP请求的报头验证
Ignore header validation for HTTP requests in Node
我正在构建一个代理服务器,它应该将数据从一个广播服务器转发到客户端。使用request
或甚至Node的http
模块,由于缺少HTTP头,此失败:
{ [Error: Parse Error] bytesParsed: 0, code: 'HPE_INVALID_CONSTANT' }
URL是:http://stream6.jungletrain.net:8000
使用curl执行报头请求,我能够验证以下内容:
$ curl -I http://stream6.jungletrain.net:8000
curl: (52) Empty reply from server
通过curl stream6.jungletrain.net:8000
测试,流运行良好。
是否有办法在request
或节点的http
禁用头验证?这是我测试它的代码:
var express = require('express');
var request = require('request');
var app = express();
app.get('/', function (req, res) {
request('http://stream6.jungletrain.net:8000').pipe(res);
stream.pipe(res);
});
var server = app.listen(3000, function () {
console.log('Server started')
});
我知道这可以通过滚动net
的实现来实现,也有icecast-stack
,但主观地认为它只正确实现了Stream
接口的一半。
使用icecast
,我能够使用on('data')
事件并通过管道将其传递给Express响应来实现此工作:
var express = require('express');
var app = express();
var icecast = require('icecast');
var url = 'http://stream6.jungletrain.net:8000';
app.get('/', function(req, res) {
icecast.get(url, function(icecastRes) {
console.error(icecastRes.headers);
icecastRes.on('metadata', function(metadata) {
var parsed = icecast.parse(metadata);
console.error(parsed);
});
icecastRes.on('data', function(chunk) {
console.log(chunk);
})
});
});
var server = app.listen(3000, function() {
console.log('Server started')
});
或简单的:
app.get('/', function(req, res) {
icecast.get(url).pipe(res);
});
同样值得注意的是:
似乎icecast包已被https://www.npmjs.com/package/icy
相关文章:
- 正在验证8个真/假复选框或复选框中的2个
- 借助asp.net验证或java脚本对多个文本进行验证
- jQuery自定义验证比较多个输入的序列
- 使用html中的外部javascript进行数据验证
- 如何使用jquery Validation验证Formspread
- jquery中的文本框验证
- 在验证和发送邮件后更改联系人表单的 html
- 代码不会验证
- JS验证ajax返回的html中的表单数据
- 同步调用,直到用户通过angular验证为访问者
- 带有加号的电话号码验证(可选)
- 解析javascript表单验证器
- 两位数的月份日期验证
- 使用angularjs验证文本框中的电子邮件
- 验证Javascript中的Textarea
- 使用regex的jquery keydown绑定不会验证撇号和句点
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 正在删除node.js中已验证的网站
- 自定义表单验证和提交
- 忽略Node中HTTP请求的报头验证