URL重写不能与iframe expressjs一起使用

时间:2014-01-21 18:44:21

标签: node.js iframe express

我正在尝试使用express重写iframe的网址。

类似的代码适用于我的public文件夹中的文件(表达了对server.use(express['static'](__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)会显示正确的网址(www.youtube.com/embed/9bZkp7q19f0),但表示会记录404错误。

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

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

res.redirect('http://www.youtube.com' + req.url.replace('videos', 'embed'));

代理实际上会从您的服务器请求该页面,下载内容并返回给客户端:(您可以使用request

req.pipe(require('request')('http://www.youtube.com' 
   + req.url.replace('videos', 'embed'))).pipe(res);