いいえ、あなたは正しいです。もちろん、暗い魔法の回避策があります。
署名された Java アプレットを埋め込みます。ユーザーが証明書を受け入れると、事実上すべての権限が付与されます。ポートをバインドし、フラッシュと Java 間の通信 (TCP 経由) に使用します。ポリシー ファイルの要求に必ず応答してください。そうしないと、フラッシュが自動的に接続を閉じてしまいます。
DNS サーバーを取得します。ユーザーがセッションを開くと、非常に短い TTL を持つ sessionID.yourdomain.tl などのサブドメインが生成され、独自のサーバーにマップされます。最初の要求は、追加の SWF ファイルである「プロキシ」に対するものです。そのリクエストの後、サブドメインを Google サーバーに再マッピングします。したがって、Flash Player はだまされて、プロキシとターゲット API が同じオリジンを持つものとして認識されます。プロキシがコンテナーからのアクセスを許可していることを確認し、アプリがプロキシ経由で URL 要求を発行できるようにする小さなインターフェイスを作成します。
編集:
最初のアプローチは実際に実行可能です: http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/rsa_signing.html。Java とフラッシュの間に軽量の TCP プロトコルを実装する方が簡単だと思いますが、別の方法として、フラッシュから Java への通信を HTTP ベースにすることもできます。Java で HTTP リクエストを処理するためのライブラリがあるかどうかはわかりません。
2 番目のアプローチについては、 BIND を DLZ と共に使用できます。起動して実行したら、DBを変更するだけで十分です。
それでもなお、中間サーバーを持つことが最も安全なソリューションです。ただし、Google の API の一部は、IP ごと、キーごと、日ごとに制限されていると考えてください。問題を回避するために、これを確認する必要があります。数年前、ジオコーディングに Google の API を使用しているときに、この問題に遭遇しました。