Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用node&;从我自己的服务器提供任何外部网页;表达_Javascript_Html_Node.js_Express - Fatal编程技术网

Javascript 使用node&;从我自己的服务器提供任何外部网页;表达

Javascript 使用node&;从我自己的服务器提供任何外部网页;表达,javascript,html,node.js,express,Javascript,Html,Node.js,Express,我想允许用户操纵另一个网页的DOM(比如www.google.com) 显然,我并不打算实际更改原始网页上的任何内容,只想允许视觉上的更改,就像它们在该网站上一样 我首先使用了iframe,但是没有办法操纵跨域iframe的DOM。因此,我考虑从我自己的服务器和我自己的域提供该网页,这样就不会有任何跨域问题 这是我在服务器上得到的信息: app.get('/showsite', (req, res) => { const url = 'https://www.google.com';

我想允许用户操纵另一个网页的DOM(比如www.google.com)

显然,我并不打算实际更改原始网页上的任何内容,只想允许视觉上的更改,就像它们在该网站上一样

我首先使用了
iframe
,但是没有办法操纵跨域
iframe
的DOM。因此,我考虑从我自己的服务器和我自己的域提供该网页,这样就不会有任何跨域问题

这是我在服务器上得到的信息:

app.get('/showsite', (req, res) => {
  const url = 'https://www.google.com';
  request(url, (err, resp, html) => {
    if (!err) {
        res.send(html);
    }
})}
我在这里所做的,实际上是使用GET请求接收网页,然后将html响应发送回客户端

网页确实会显示给客户端,但页面完全乱七八糟- 相对路径错误、样式、编码等


什么样的实施才能使其正确?

只要您能够拉入并托管构成该网站的所有资产,就可以抓取第三方网站,更改并重新显示其内容。在您的情况下,google.com登录页上有许多图像需要从您自己的域中的服务器检索并提供服务

  • 您将需要使用一个工具,如刮取和遍历目标网站的所有子资产
  • 使用像下载所有子资源这样的工具,您需要在服务器上本地复制并保存所有这些资产。保存它们的目录路径必须与原始文件的精确路径匹配
  • 一旦您拥有了所有的子资源(css、图像、脚本、字体),您就可以操作原始html并提供新内容

  • 网页不仅仅是html。加载了大量资源,为每个站点提供了自己的风格和功能。当然,它们是从index.html文件导入的。不管是哪种方式,我知道我可以做我想做的事情(我在几个网站上看到过这种行为),只是不确定正确的实现谢谢你的回答,但我想知道为什么我必须保存所有这些。看起来没有相对路径的图像和脚本是可以加载的,那么仅仅改变html本身的相对路径就可以得到它们吗?