【问题标题】:How to use guacamole in my own django project如何在我自己的 django 项目中使用鳄梨酱
【发布时间】:2023-03-28 06:16:03
【问题描述】:

最近,我正在用 guacamole 编写一个 Django 项目。如何将鳄梨酱窗口插入到我的 Django 页面?

我尝试使用 iframe(django 的 IP 是 localhost:8000 并且 guacamole 的 IP 是 localhost:8080 ,但是用户必须输入用户名和登录 Django 页面的 guacamole 的密码。

当然django页面可以通过ajax请求获取guacamole的用户名和密码,但是好像不能操作inner iframe的元素,它的IP和外部网页不同。

我使用 urllib2(来自 Django 网络服务器)向 guacamole(localhost:8080/guacamole/api/tokens 发送请求,带有用户名和密码,只得到一个令牌,我不知道怎么用也不行。

我尝试通过网络浏览器发送请求,但收到错误XMLHttpRequest 无法加载http://192.168.1.142:8080/guacamole/api/tokens。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问 Origin 'null'。

我不希望用户输入可怕的用户名和密码。我该如何解决?感谢您的收看。

【问题讨论】:

    标签: django guacamole


    【解决方案1】:

    我尝试使用 iframe ...

    我必须注意不要为此使用iframe。它看起来非常简单,但除了您已经遇到的问题之外,管理与iframe 相关的浏览器键盘焦点很困难。当在 Guacamole 中输入不起作用时,您的用户会感到困惑。将 Guacamole 嵌入不同应用程序的最佳方法是利用 Guacamole 的 JavaScript 和 Java API:分别为 guacamole-commonguacamole-common-js(更多内容见下文)。

    我使用 urllib2(来自 Django web 服务器)向 guacamole(localhost:8080/guacamole/api/tokens 使用用户名和密码发送请求,只得到一个令牌,我不知道如何使用它,也不知道它是否会工作的。

    您无需绕过 Guacamole Web 应用程序的身份验证系统等,即可将 Guacamole 嵌入到其他东西中 - Guacamole 项目为此提供了一组 API。如果你想在另一个项目中使用 Guacamole,理想的方法是使用它的 JavaScript API,同时在后端的隧道部分严格利用 Java API:http://guac-dev.org/doc/gug/writing-you-own-guacamole-app.html

    以这种方式编写您的应用程序将允许您指定哪种身份验证机制(如果有)将应用于嵌入在您的应用程序中的 Guacamole JavaScript 客户端使用的隧道,以及每个连接的配置信息是如何派生的或检索,并且由于您将直接使用 Guacamole JavaScript 客户端,因此不会有 iframe

    请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问 Origin 'null'。

    此错误是由于违反了浏览器的same-origin policy。由于您在混合“localhost”和私有 IP (192.168.1.142) 时遇到此问题,这看起来主要是由于您测试应用程序的方式,我不确定您是否会遇到此问题作为您的项目成熟。如果这个问题继续存在,有两种主要的方法来处理跨域问题:

    1. 使用 Apache 或 Nginx 的代理 Guacamole,以便从与应用程序的其余部分相同的域有效地提供它。
    2. 确保在创建 Guacamole.HTTPTunnel 时将 crossDomain 设置为 true

    【讨论】:

    • 感谢您的回复。 java API 和 JavaScript API 确实提供了一个函数日志来使用。因为我不会写java,所以现在和一个会写java的同事合作。我想我们可以一起解决这个问题。
    • @ramwin 你能在你的项目中使用鳄梨酱吗?如果是这样,请分享代码 sn-p,您可以在其中从您的应用程序连接到不同的远程计算机。谢谢
    • Here 是官方文档。因为代码归我公司所有,而且我已经离开了这家公司,所以我不方便透露代码。我认为文档对于开发人员来说已经足够清晰了。试着关注它,如果你有任何问题,很高兴问我。
    猜你喜欢
    • 1970-01-01
    • 2017-03-28
    • 2017-04-13
    • 2011-03-18
    • 2022-08-05
    • 2019-04-04
    • 2018-03-05
    • 2015-12-01
    • 2016-05-11
    相关资源
    最近更新 更多