Node.js URL重写不适用于iframe expressjs
我正在尝试使用重写iframe的URL 类似的代码在我的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
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);