0

最近、ワカモレを使って Django プロジェクトを書いていました。Django ページにワカモレ ウィンドウを挿入するにはどうすればよいですか?

iframe を使用しようとしました (django の IP はlocalhost:8000であり、guacamole の IP はlocalhost:8080ですが、Django ページにログインしていても、ユーザーは guacamole のユーザー名とパスワードを入力する必要があります。

もちろんDjangoページはajaxリクエストでguacamoleのユーザー名とパスワードを取得できますが、外側のWebページとIPが異なる内側のiframeの要素を操作することはできないようです。

私は urllib2 (Django Web サーバーから) を使用して guacamole( localhost:8080/guacamole/api/tokensにユーザー名とパスワードを指定して) にリクエストを送信し、トークンのみを取得します。使用方法も、動作するかどうかもわかりません。

Webブラウザでリクエストを送ろうとしたところ、XMLHttpRequest cannot load http://192.168.1.142:8080/guacamole/api/tokensというエラーが出ます。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーがありません。したがって、オリジン 'null' へのアクセスは許可されません。

ユーザーにユーザー名とパスワードを入力させたくないのですが、これはひどいものです。どうすれば修正できますか?ご覧いただきありがとうございます。

4

1 に答える 1

2

iframeを使ってみた...

これに を使用しないように注意する必要がありiframeます。魅力的なほど単純に思えますが、これまでに遭遇した問題を超えて、ブラウザのキーボード フォーカスを管理することiframeは困難です。Guacamole 内での入力が機能しない場合、ユーザーは混乱します。Guacamole を別のアプリケーションに埋め込む最良の方法は、Guacamole の JavaScript API と Java API (それぞれ guacamole -commonguacamole-common-js ) を活用することです (詳細は以下を参照)。

私は urllib2 (Django Web サーバーから) を使用して guacamole( localhost:8080/guacamole/api/tokens にユーザー名とパスワードを指定して) にリクエストを送信し、トークンのみを取得します。使用方法も、動作するかどうかもわかりません。

Guacamole を別のものに埋め込むために、Guacamole Web アプリケーションの認証システムなどをハックする必要はありません。Guacamole プロジェクトは、この目的のために一連の API を提供します。別のプロジェクト内で Guacamole を使用したい場合、これを行う理想的な方法は、バックエンドのトンネル部分に厳密に Java API を活用しながら、その JavaScript API を使用することです: http://guac-dev.org/doc/gug /writing-you-own-guacamole-app.html

この方法でアプリケーションを作成すると、アプリケーションに埋め込まれた Guacamole JavaScript クライアントによって使用されるトンネルに適用される認証メカニズム、および各接続の構成情報がどのように導出または取得されるかを正確に指定できます。 Guacamole JavaScript クライアントを直接使用するため、iframe.

要求されたリソースに「Access-Control-Allow-Origin」ヘッダーがありません。したがって、オリジン 'null' へのアクセスは許可されません。

このエラーは、ブラウザの同一生成元ポリシーに違反しているためです。「localhost」とプライベート IP (192.168.1.142) を混在させているときにこれが発生しているため、これは主にアプリケーションのテスト方法が原因であるように見えます。プロジェクトが成熟します。この問題が続く場合は、クロスオリジンの問題に対処する主な方法が 2 つあります。

  1. アプリケーションの残りの部分と同じドメインから効果的に提供されるように、Apache または Nginx を使用して Guacamole をプロキシします。
  2. Guacamole.HTTPTunnelを作成するときに設定crossDomainしていることを確認してください。true
于 2015-10-30T04:55:35.313 に答える