我在云服务器中有一个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调用(当然,提供正确的用户名/密码对)。
提前致谢!
答案 0 :(得分:1)
通常,这些跨域问题与浏览器有关,而与服务器有关。浏览器将限制您使用AJAX更新到您所在页面域的能力。有一些解决方法,如JSONP,但我不知道这是否适用于POST。
我们决定使用第三方代理库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>