Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript node.js安装http代理_Javascript_Node.js - Fatal编程技术网

Javascript node.js安装http代理

Javascript node.js安装http代理,javascript,node.js,Javascript,Node.js,我是根据Node.js手册输入的,但不能在IE或chrome中使用。 有人能查一下问题出在哪里吗? 代码如下: var http = require("http"); var url = require("url"); var server = http.createServer(function (sreq, sres) { var url_parts = url.parse(sreq.url); var opts = { host: "www.163.com"

我是根据Node.js手册输入的,但不能在IE或chrome中使用。 有人能查一下问题出在哪里吗? 代码如下:

var http = require("http");
var url = require("url");
var server = http.createServer(function (sreq, sres) {
    var url_parts = url.parse(sreq.url);
    var opts = {
        host: "www.163.com",
        port: 80,
        path: url_parts.pathname,
        headers: sreq.headers
    };
    var creq = http.get(opts, function (cres) {
        sres.writeHead(cres.statusCode, cres.headers);
        cres.pipe(sres);
    });

    sreq.pipe(creq);
});
server.listen(1337, "127.0.0.1", function () {
    console.log("listening" + server.address().port + "......");
});

远程服务器,
www.163.com
,可能需要设置适当的
主机
头。使用您的代码,您将通过浏览器向服务器发送
主机
头;换句话说,
127.0.0.1:1337
(或者可能是
localhost:1337

尝试将标头更改为目标主机:

var opts = {
    host: "www.163.com",
    port: 80,
    path: url_parts.pathname,
    headers: sreq.headers
};
opts.headers.host = 'www.163.com';
...

你想访问哪个url?您使用主机名
www.163.com
创建了一个服务器,但随后让它在127.0.0.1上侦听。到目前为止,我还不是NodeJS专家,但这对我来说似乎很奇怪。另外,请提供更多信息。什么不起作用?什么都没印出来?撞车?Etchi,它是代理,而不是创建163.com的服务器。我创建localhost代理并请求访问www.163.com(您可以更改为任何已知的网站,例如www.google.com,但中国的防火墙除外)。此代理将向目标网站发送请求,并通过localhost代理获取数据和显示。但仍然存在问题。如果
opts.host
不同于
opts.headers.host
。响应数据将与
opts.headers.host一起提供。这意味着
opts.host
的设置没有用。@SunnySun
opts.host
是请求应该发送到的主机,
opts.headers.host
为该请求设置HTTP
host
头。这些(严格地说)没有关系。