如何在我自己的django项目中使用鳄梨酱

时间:2015-10-29 11:10:31

标签: django guacamole

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

  

我尝试使用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

  

否'访问控制 - 允许 - 来源'标头出现在请求的资源上。起源' null'因此不允许访问。

此错误是由于违反了浏览器的same-origin policy。因为你在混合" localhost"时遇到了这个问题。看起来这主要是由于你如何测试应用程序,我不确定你的项目是否成熟时是否会遇到这个问题。如果这个问题仍然存在,有两种主要的方法来处理跨源问题:

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