1

我在云服务器中有一个 Web 应用程序。我的 Web 应用程序的一个控制器将要通过移动应用程序访问的 URL 外部化(使用 JavaScript;我正在使用 Titanium 为 Android 和 iOS 开发)。我可以毫无问题地访问 GET 方法并获得我想要的,但是当我调用 POST 方法来发送要处理的信息时,我得到了 Bad Server - HTTP Error。为了保护我的 URL,我使用在我的应用程序和 JBoss(standalone.xml 文件)中配置的 BASIC 身份验证。当我从 Web 应用程序中的表单(使用 JQuery Ajax)访问 POST 方法时,没关系,所以我认为这是一个跨域问题。

是否需要在 JBoss 中进行任何配置,以便我的 Web 应用程序可以接收来自任何其他域的 POST 调用(当然,提供正确的用户名/密码对)。

提前致谢!

4

1 回答 1

1

通常,这些跨域问题与浏览器有关,而不是与服务器有关。浏览器会将您使用 AJAX 更新的能力限制在您所在页面的域中。有一些解决方法,例如 JSONP,但我不知道这是否适用于 POST。

我们决定使用第 3 方代理库HTTP Proxy Servlet。这个代理 servlet 允许您通过一个简单的 web.xml 添加 POST 就好像到您的本地可访问域一样。这样做,我们也不必弄乱 JSONP,直接 JSON 就可以了。

我们正在使用它来将多个不同的路径转发到多个不同的服务器(您可以在同一个 Web 应用程序中使用此方法拥有多个转发器)。我们的 web.xml 只是一系列 servlet 映射(每个外部 RESTful 服务指向基本路径):

   <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 回答