1

クラウド サーバーに Web アプリケーションがあります。私の Web アプリケーションのコントローラーの 1 つは、モバイル アプリを介してアクセスできるように URL を外部化します (JavaScript を使用します。私は Android と iOS の開発に Titanium を使用しています)。問題なく GET メソッドにアクセスでき、必要なものを取得できますが、POST メソッドを呼び出して処理対象の情報を送信すると、Bad Server - HTTP エラーが発生します。URL を保護するために、アプリケーションと JBoss (standalone.xml ファイル) で構成された BASIC 認証を使用します。Web アプリケーション内のフォーム (JQuery Ajax を使用) から POST メソッドにアクセスしても問題ないので、これはクロスドメインの問題だと思います。

私のWebアプリケーションが他のドメインからPOST呼び出しを受信できるように、JBossで行う設定はありますか(もちろん、正しいユーザー名とパスワードのペアを提供します)。

前もって感謝します!

4

1 に答える 1

1

通常、これらのクロスドメインの問題は、サーバーではなくブラウザに関係しています。ブラウザーは、AJAX 更新を使用する機能を、現在表示しているページのドメインに制限します。JSONPなどいくつか回避策はありますが、POSTで使えるかどうかはわかりません。

サードパーティのプロキシ ライブラリHTTP Proxy Servletを使用することにしました。このプロキシ サーブレットを使用すると、単純な web.xml を追加するだけで、ローカルにアクセス可能なドメインに POST することができます。これを行うと、JSONP をいじる必要もありません。単純な JSON だけで問題なく動作します。

これを使用して、複数の異なるパスを複数の異なるサーバーに転送しています (同じ Web アプリでこの方法を使用して、複数のフォワーダーを使用できます)。web.xml は一連のサーブレット マッピングです (ベース パスを指す外部 RESTful サービスごとに 1 つ):

   <servlet>
      <servlet-name>MyOneProxy</servlet-name>
      <servlet-class>org.mitre.dsmiley.httpproxy.ProxyServlet</servlet-class>
      <init-param>
         <param-name>targetUri</param-name>
         <param-value>http://external-web-app.com/basePath</param-value>
      </init-param>
      <init-param>
         <param-name>log</param-name>
         <param-value>true</param-value>
      </init-param>
   </servlet>
   <servlet-mapping>
      <servlet-name>MyOneProxy</servlet-name>
      <url-pattern>/internalBasePath/*</url-pattern>
   </servlet-mapping>
于 2013-05-22T01:12:45.223 に答える