Node.js:使用Express路由进行URL重写以代理到etherpad

威尔姆

我对stackoverflow的第一个问题;)。


我想做的事情:我想使用一条快速路由“ / pad / *”显示以太板(etherpad lite)并操纵用户将看到的垫子。因此,如果我得到“ / pad / p / something”,则将处理“ something”,并相应地更改为真实ID,例如“ XYZ”。因此,用户可以编辑正确的打击垫。但是,etherpad需要大量静态内容和websocket,因此我想代理它,并在需要时操纵ID


最小的工作示例:ID更改的真正逻辑当然要复杂得多,但是对于最小的工作示例,我仅使用将每个padID映射到“ a”的逻辑。

我想出了这个:

/* packages */
var express = require( "express" );
var http = require( "http" );
var httpProxy = require('http-proxy');

/* app */
var app = express();
app.use(app.router);

/* some express logic */
app.get( '/' , function( req , res ) {
    res.end( "hello world" );
} );

/* the proxy */
var padProxy = httpProxy.createProxyServer( {} );

padProxy.on('error', function (err, req, res) {
    res.writeHead(500, {
        'Content-Type': 'text/plain'
    });
    res.end('some error');
});

app.all( '/pad/*' , function( req , res ) {

    var url = req.url;
    url = url.slice(4)

    /*WHY DOES THIS NOT WORK????*/
    if( url.slice(0,3) === '/p/' ) {
        url = "/p/a"
    };

    req.url = url;

    return padProxy.web(req, res , { target: "http://<etherpad server ip>:<etherpad server port>" } );

} )

/* run */
http.createServer(app).listen( 3000 , function(){
    console.log( "started" );
});

问题:URL更改和代理实际上有效。所有的URL都被映射为删除每个URL前面的“ / pad”,这些URL适用于pad,静态内容和websocket。但是,pad ID的映射不起作用。如果查看“ localhost:3000 / pad / p / a”,则会看到“ a” -pad。如果我查看“ localhost:3000 / pad / p / b”,则会看到“ b” -pad,它不是我打算做的:/。

我究竟做错了什么?这是node-http-proxy,express或etterpad-lite问题吗?

任何提示表示赞赏

威尔姆

好吧。我刚刚和etherpad-lite开发人员聊天。由于etherpad的内部工作,因此该计划不起作用。客户端要求提供有关它在浏览器中看到的url的数据,因此重写是无用的。

如果其他人遇到该问题,我会添加此答案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

IIS反向代理到node.js

来自分类Dev

Node.js + Express:重写URL路径

来自分类Dev

使用Apache代理的Node.js路由

来自分类Dev

使用Express和Node.js进行路由时出现404错误

来自分类Dev

如何使用Node.js Express模块化路由

来自分类Dev

使用Express和Passport JS重定向Node中的路由

来自分类Dev

开发环境的Node.js Express安装代理,对于Mac OS X,在URL中避免使用localhost

来自分类Dev

重写Node.js的PHP URL

来自分类Dev

node.JS Express护照路由

来自分类Dev

Node.js + Express:指定路由

来自分类Dev

node.JS Express护照路由

来自分类Dev

将从服务器获取的数据处理到html文件中(使用Node.js和Express)

来自分类Dev

从node.js应用程序代理到博客子域时出错

来自分类Dev

Node JS TCP代理:使用Node JS设置HTTP隧道

来自分类Dev

Node JS TCP代理:使用Node JS设置HTTP隧道

来自分类Dev

使用请求模块的Node.JS代理

来自分类Dev

使用Node JS从URL导入JSON文件(Express)

来自分类Dev

在node.js和Express中使用URL参数

来自分类Dev

使用express node.js的路由,但express.Router变得未定义

来自分类Dev

Node.js Express-无需进入路由功能即可获取路由参数以进行快速分析跟踪

来自分类Dev

使用Babel编译Node / Express以进行生产

来自分类Dev

尝试在Node-JS / Express中代理图像

来自分类Dev

Node.js Express-代理请求后调用next()

来自分类Dev

Node JS:Express入门

来自分类Dev

node.js限制了路由,因此可以通过jquery进行加载,但无法通过url访问

来自分类Dev

即使使用通配符,Node.js Express路由也无法捕获某些GETS

来自分类Dev

使用express将不同的路由器用于node.js中的不同子域

来自分类Dev

使用 express 和 ES6 类在 node js rest api 中查找路由的问题

来自分类Dev

如何在 Node JS 中使用 express 创建控制器和路由器

Related 相关文章

  1. 1

    IIS反向代理到node.js

  2. 2

    Node.js + Express:重写URL路径

  3. 3

    使用Apache代理的Node.js路由

  4. 4

    使用Express和Node.js进行路由时出现404错误

  5. 5

    如何使用Node.js Express模块化路由

  6. 6

    使用Express和Passport JS重定向Node中的路由

  7. 7

    开发环境的Node.js Express安装代理,对于Mac OS X,在URL中避免使用localhost

  8. 8

    重写Node.js的PHP URL

  9. 9

    node.JS Express护照路由

  10. 10

    Node.js + Express:指定路由

  11. 11

    node.JS Express护照路由

  12. 12

    将从服务器获取的数据处理到html文件中(使用Node.js和Express)

  13. 13

    从node.js应用程序代理到博客子域时出错

  14. 14

    Node JS TCP代理:使用Node JS设置HTTP隧道

  15. 15

    Node JS TCP代理:使用Node JS设置HTTP隧道

  16. 16

    使用请求模块的Node.JS代理

  17. 17

    使用Node JS从URL导入JSON文件(Express)

  18. 18

    在node.js和Express中使用URL参数

  19. 19

    使用express node.js的路由,但express.Router变得未定义

  20. 20

    Node.js Express-无需进入路由功能即可获取路由参数以进行快速分析跟踪

  21. 21

    使用Babel编译Node / Express以进行生产

  22. 22

    尝试在Node-JS / Express中代理图像

  23. 23

    Node.js Express-代理请求后调用next()

  24. 24

    Node JS:Express入门

  25. 25

    node.js限制了路由,因此可以通过jquery进行加载,但无法通过url访问

  26. 26

    即使使用通配符,Node.js Express路由也无法捕获某些GETS

  27. 27

    使用express将不同的路由器用于node.js中的不同子域

  28. 28

    使用 express 和 ES6 类在 node js rest api 中查找路由的问题

  29. 29

    如何在 Node JS 中使用 express 创建控制器和路由器

热门标签

归档