0

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

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

当然,Django页面可以通过ajax请求获取guacamole的用户名和密码,但是我们似乎无法操作IP与外部网页不同的内部iframe的元素。

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

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

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

4

1 回答 1

2

我尝试使用 iframe ...

我必须警告不要iframe为此使用 an 。它看起来非常简单,但除了您已经遇到的问题之外,管理浏览器键盘焦点相对于 aniframe是很困难的。当在 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' 不允许访问。

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

  1. 使用 Apache 或 Nginx 代理 Guacamole,这样它就可以从与应用程序的其余部分相同的域有效地提供服务。
  2. 确保在创建Guacamole.HTTPTunnel时设置crossDomain为。true
于 2015-10-30T04:55:35.313 回答