【问题标题】:Chrome Kiosk App Keeping user's within domainChrome Kiosk 应用程序将用户保持在域内
【发布时间】:2015-02-06 08:35:50
【问题描述】:

我正在创建一个 Chrome Kiosk 应用程序,以允许用户在我们的数据库中搜索书籍,因此它几乎是一个图书馆搜索系统。 它使用通用搜索栏所在的网站主页。当您输入标题时,它会搜索数据库并以书籍格式、音频格式等显示结果。

但是,我想确保他们留在域名内,这样他们就无法访问 playboy.com 或任何其他网站。

这是我目前的 HTML:

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="browser.css">
    <script src="jquery.min.js"></script>
    <script src="browser.js"></script>
  <body>
    <div id="controls">
      <button id="back" title="Go Back">&#9664;</button>
      <button id="forward" title="Go Forward">&#9654;</button>
      <button id="home" title="Go Home">&#8962;</button>
      <button id="reload" title="Reload">&#10227;</button>
      <form id="location-form">
        <div id="center-column">
        </div>
      </form>
    </div>
    <webview src="https://thesmartstore.org/in-house-search" style="width:100%; height:100%"></webview>
    <div id="sad-webview">
      <div id="sad-webview-icon">&#9762;</div>
      <h2 id="crashed-label">Aw, Snap!</h2>
      <h2 id="killed-label">He's Dead, Jim!</h2>

      <p>Something went wrong while displaying this webpage.
      To continue, reload or go to another page.</p>
    </div>
  </body>
</html>

我的 Javascript 相当繁重,但我想知道是否有办法将这个域列入白名单或确保它们留在 https://thesmartstore.org/ 域上。只要url开头是这个,应该是好的,如果不是,我会将它们重定向到主页。

由于Javascript比较大,所以我把它粘贴到了pastebin:http://pastebin.com/UecgS4sQ

感谢您的帮助!

【问题讨论】:

    标签: javascript google-chrome-app whitelist blacklist kiosk-mode


    【解决方案1】:

    一个更好的选择,而不是请求一个 url 并信任我们可以使用 ajax 的用户,然后用我们的 json 得到响应

    function navigateTo(search) {
      resetExitedState();
      var ajax = new XMLHttpRequest();
      //any request headers
      //ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
       ajax.onreadystatechange = function(){
       if (ajax.readyState === 4) {
         if (ajax.status === 200) {
            //make a function to process the JSON
            processJSON();
          } else {
             alert('There was a problem with the request.');
          }
        }
      };
      var formData = new FormData();
      formData.append('q',search);
      httpRequest.open('POST', 'https://thesmartstore.org/search.php', true);
      httpRequest.send(formData);
    }
    

    【讨论】:

    • 不,您可以检查 Chrome Kiosk 应用程序上的元素并触发 window.location.href = 'http://google.com/' 并搜索您喜欢的任何内容。这就是我试图避免的。完整的域更改。并且似乎需要能够编辑 webview 标签,因为这是控制 chrome kiosk 应用程序导航的原因。他们在开发方面非常时髦..
    • 好吧,我不能 100% 确定信息亭应用程序与其他应用程序相比,我现在正在阅读它。如果它就像一个 chrome 应用程序,您可以在开发模式下右键单击,但在发布期间不能。不过话说回来,如果我真的想去www.playboy.com,我只会去它而不是尝试通过你的应用程序来做
    • 是的,您尝试过其他自助服务终端应用吗?据我所知,在 Chrome 操作系统中,我的 chromebook 上的屏幕坏了,我们无法在应用程序中右键单击或检查,只有在开发模式下。如果您执行我的第二个建议,它将消除所有试图阻止这一切的麻烦和麻烦。
    • 哈哈是真的。我的工作场所希望我在这里做一个白名单的事情,但老实说,我认为这没有必要,我什至不知道在 Javascript 中是否可行,是吗?我的意思是一旦他们离开你的网站,你的 JS 就不再适用了,我不认为..
    • 网站本地没有 JavaScript。如果您使用的是 chrome 应用程序,您仍然可以控制 webview。尤其是在 background.js 中
    【解决方案2】:

    处理 webview 的 loadstart 事件。 https://developer.chrome.com/apps/tags/webview

    【讨论】:

    • 我们将不胜感激,否则这将被视为仅链接。
    • 我没有样品;我自己从来没有使用过这个活动。如果这是更好的结果,请继续投票。
    猜你喜欢
    • 2018-02-17
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 2017-10-04
    • 2020-10-06
    • 2016-08-03
    • 2018-12-16
    • 1970-01-01
    相关资源
    最近更新 更多