通常,这些跨域问题与浏览器有关,而不是服务器。浏览器将限制您使用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>
你是说,如果你使用GET网络调用工作正常,但如果你打开它发布它失败?创建一个可能没有参数的基本Web服务方法并进行POST调用。我更可能猜测你的问题与你传递的参数有关。你是将它们传递给查询字符串还是消息正文? – Martin
我第二@Martin。如果它适用于'GET's,尽管不能保证,它*应该*也适用于'POST'。你不需要做一些配置来启用'GET'吗?您是否确定要发送'POST'所需的所有内容? – acdcjunior