使用nodejs中httpProxy代理时候出现404异常

在公司中使用nodejs构建代理服务器实现前后台分离,代码不能拿出来,然后出现httpProxy代理资源的时候老是出现404.明明被代理的接口是存在的。代码大概如下:

var http = require(‘http‘),
    httpProxy = require(‘http-proxy‘);

var proxy = httpProxy.createProxyServer({});

var server = http.createServer(function(req, res) {

  proxy.web(req, res, { target: ‘http://www.cnblogs.com/xiaopen/‘ });
});

console.log("listening on port 5050")
server.listen(5050);

然后报错或者是404错误码。

解决方案:

在代理请求中,把请求头中的host给删除,改进代码如下:

var http = require(‘http‘),
    httpProxy = require(‘http-proxy‘);

var proxy = httpProxy.createProxyServer({});

var server = http.createServer(function(req, res) {

  delete req.headers.host;
  proxy.web(req, res, { target: ‘http://www.cnblogs.com/xiaopen/‘ });
});

console.log("listening on port 5050")
server.listen(5050);

然后如期运行正确。

http://stackoverflow.com/questions/24465675/http-proxy-keeps-returning-404

时间: 2024-10-15 11:37:02

使用nodejs中httpProxy代理时候出现404异常的相关文章

nodejs中http-proxy使用小结

最近在写xmocker的工具,用于开发前期的mock数据,不可避免的用到了代理的中间件.当然,github上有关于http-proxy封装的中间件.毕竟是自己练手的项目,就自己写了个中间件,方便定制功能. http-proxy库用于koa中,是使用它的 proxy.web方法.常规的用法是: proxy.web(req, res, { target: 'http://mytarget.com:8080' }, function(e) { ... }); 项目中的要求是将API代理到用户填写的网址

nodejs 实现反向代理

要说到反向代理,很多人第一时间想到的是nginx,没错,在这个领域做得最好的,我觉得应该算是nginx,为什么想用nodejs来实现?处于一种研究的心态和让反向代理更好的为自己服务,毕竟要修改nginx还需要c c++等这些方面的知识,而且我对nodejs更为熟悉一点(说白了就是不懂C++-..). 说到反向代理,那首先要明白什么是反向代理,我们一般用代理就是我要访问一个网站,但是直接访问不了,然后通过代理服务器访问,然后代理服务器再将信息返回给我,代理的这个行为是发生在客户端.反向代理则刚好相

ios中的代理与协议(delegate)

源码地址 :http://download.csdn.net/download/swanzhu/9016861 一.理解协议与代理 协议 协议的格式:@protocol关键字:协议的声明 例如 @protocol CustomAlertViewDelegate <NSObject> <methods>协议的方法 @optional //此关键字下声明的方法,是可选实现的方法. @required //此关键字声明的方法为,必须实现的方法,如果不实现,编译会报警告,程序运行崩溃. /

Node.js(十二)——NodeJs中的Promise

爬虫基于回调和事件的方式去实现,回调也是被诟病已久的问题尤其是callback这种,无论是阅读还是调试都很费劲,甚至我们连代码的堆栈都看不到,这是一种反人类的写法,Promise来拜托这种痛苦的方式 传统方式实现动画效果: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Promise animation</title> <style&g

[转]nodejs中的process模块--child_process.exec

1.process是一个全局进程,你可以直接通过process变量直接访问它. process实现了EventEmitter接口,exit方法会在当进程退出的时候执行.因为进程退出之后将不再执行事件循环,所有只有那些没有回调函数的代码才会被执行. 在下面例子中,setTimeout里面的语句是没有办法执行到的. 1 process.on('exit', function () { 2 setTimeout(function () { 3 console.log('This will not ru

nodejs中aes-128-cbc加密和解密

和java程序进行交互的时候,java那边使用AES 128位填充模式:AES/CBC/PKCS5Padding加密方法,在nodejs中采用对应的aes-128-cbc加密方法就能对应上,因为有使用向量(iv),所以nodejs中要用createCipheriv方法,而不是createCipher. 在这类加密和解密的计算中,最最要注意的就是中文编码问题,不然铁定采坑.我踩完坑了,把能跑的代码发上来下,运行环境nodejs 4.4.6. var crypto = require('crypto

nodeJS中npm常见的命令

常用的nodeJS中npm的命令:npm主要是node包管理和发布的工具.npm常用的命令:1:npm install <name> //(下载包) 下载后的包放在当前路径下面 npm install express 下载express模块2:npm install <name> -g //-g 将包安装到全局环境中,我PC的全局环境是:C:\Users\qinbb\AppData\Roaming\npm,但是在代码中直接通过require()的方式是没有办法调用全局安装的包的3:

在NodeJS中玩转Protocol Buffer

Protocol Buffer入门教程 Protocol Buffer是个什么鬼 NodeJS开发者为何要跟Protocol Buffer打交道 在NodeJS中实践Protocol Buffer协议 选择支持protobuf的NodeJS第三方模块 一个栗子 书写proto文件 编译 proto 文件 编写 Writer 编写Reader 运行结果 再举一个栗子 编写proto 编写client 书写server 运行结果 其他高级特性 嵌套Message Import Message 总结一

java中设置代理的两种方式

1 前言 有时候我们的程序中要提供可以使用代理访问网络,代理的方式包括http.https.ftp.socks代理.比如在IE浏览器设置代理. 那我们在我们的java程序中使用代理呢,有如下两种方式.直接上代码. 2 采用设置系统属性 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 import jav