通常,这些跨域问题与浏览器有关,而不是与服务器有关。浏览器会将您使用 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>