Node.js URL重写不适用于iframe expressjs

Node.js URL重写不适用于iframe expressjs,node.js,iframe,express,Node.js,Iframe,Express,我正在尝试使用重写iframe的URL 类似的代码在我的public文件夹中可用的文件上也能很好地工作(这要感谢server.use(express['static'](express['dirname+'/public') 玉码: iframe(width="560", height="315", src="/videos/9bZkp7q19f0", frameborder="0", allowfullscreen=true) 快速代码: server.use(function(req, r

我正在尝试使用重写iframe的URL

类似的代码在我的
public
文件夹中可用的文件上也能很好地工作(这要感谢
server.use(express['static'](express['dirname+'/public'

玉码:

iframe(width="560", height="315", src="/videos/9bZkp7q19f0", frameborder="0", allowfullscreen=true)
快速代码:

server.use(function(req, res, next) {
  if (/videos/.test(req.url)) {
    req.url = req.url.replace("videos", "embed");
    req.url = "www.youtube.com" + req.url;
  }

  next();
});
添加
console.log(req.url)
会显示正确的url(www.youtube.com/embed/9bZkp7q19f0),而express会记录404错误


提前感谢。

您不能仅仅更改
req.url
并期望客户端实际从那里检索数据。您需要的是代理或重定向

重定向将强制iframe重定向到
youtube.com

res.redirect('http://www.youtube.com' + req.url.replace('videos', 'embed'));
代理实际上会从您的服务器请求页面,下载内容,然后服务回客户机:(您可以使用它)


谢谢你的回答。虽然重定向不是一个选项,但请求正是我所需要的。@medimatrix没问题!你可能需要处理请求标题。同时检查youtube的可接受使用策略,以防万一。
req.pipe(require('request')('http://www.youtube.com' 
   + req.url.replace('videos', 'embed'))).pipe(res);