如何在内容/样式上有一些更改的情况下为外部网站提供服务?

时间:2018-08-17 19:42:12

标签: javascript html css angularjs angular

我正在尝试建立一个信息亭,使人们可以使用此URL来打印收据。所以我必须隐藏标题和其他允许退出页面的链接。

这是我到目前为止尝试过的,但没有成功:

  1. 带有JS脚本的iframe将css附加到页面:由于CORS策略而失败。
  2. 在本地主机上通过Apache或NGINX代理传递以绕过iframe的CORS块:仍在尝试。
  3. 带有file_gets_content + str_replace的PHP:修复了所有404错误,但仍然得到空白页。

这是代码:

<?php
$content = file_get_contents('https://www.lottomatica.it/scommesse/avvenimenti');
$content = str_replace(
    '</title>',
    '</title><base href="https://www.lottomatica.it/">', 
$content);
$content = str_replace(
    '/etc/',
    'https://www.lottomatica.it/etc/', 
$content);
$content = str_replace(
    '/content/',
    'https://www.lottomatica.it/content/', 
$content);
$content = str_replace(
    '</head>',
    '<style>
        header {
            display: none!important;
        }
    </style>
    </head>', 
$content);
echo $content; ?>

我不需要使用特定的技术,只需拉页面内容,隐藏标题和其他部分并将其提供给Chrome Kiosk应用程序在本地主机上即可。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

对于我们使用的播客feed生成服务,我做了类似的事情。我们将内容发布到他们,他们为提要生成所有xml标记,但是我想将提要托管在我们的服务器上,并使其看起来像我们所做的一样。

我正在使用由sub_filter模块构建的Nginx,我的位置块如下所示:

location /podcast {
    sub_filter_types text/xml;
    sub_filter '<atom:link href="http://<provider-url>/path/podcast/'  '<atom:link href="https://my-website.com/podcast/';
    sub_filter '<link>http://<provider-url>/path/</link>' '<link>https://my-website.com/</link>';
    sub_filter_once off;
    sub_filter_last_modified on;
    proxy_set_header Accept-Encoding "";
    proxy_pass https://<provider-url>/path/podcast/;
}

另一种替代方法是,您可以在Nginx中设置一个位置块,该位置块将其站点未更改地代理到服务器上的URL,然后将您现有的JavaScript代码指向该URL。然后,您将获得内容而不会出现CORS问题,但是只要打开该链接,任何看着控制台的人都可以弄清楚内容的来源。

答案 1 :(得分:0)

旧话题,只是想分享我的经验。

尝试了不同的解决方案。第一个工作是在开始时使用chrome devtools注入自定义css和js。它可以正常工作,但是效率低下,并且在6小时以上的会话中会导致随机崩溃。

最后一种有效且目前仍在生产中的解决方案,也很优雅,它使用了自定义chrome扩展程序,该扩展程序将特定的CSS /脚本添加到特定的页面,并且还包含用于自定义函数,处理程序,更新,身份验证等的代码。

希望这可以帮助某人。