我有两个名为 opentripplanner-webapp 和 opentripplanner-api-webapp 的应用程序。我已经成功地将它们部署在本地 tomcat 服务器上。应用程序的 url 为http://localhost:8080/opentripplanner-webapp
和http://localhost:8080/opentripplanner-api-webapp
。当我在 appfog 上部署应用程序时,它们为我提供了两个应用程序的不同域。问题是我的应用程序使用在跨域上不起作用的 ajax 请求和响应。我正在寻找两天以找到任何解决方案,但没有找到任何合适的解决方案。请指导我。谢谢
问问题
179 次
1 回答
0
这里有几个选项供您选择:
- 使用JSONP(带填充的 JSON)。您必须编写您的 api,以便它支持此协议,但这不应该太难。
- 创建两者
opentripplanner-webapp
,opentripplanner-api-webapp
因此它们支持Cross Origin Resource Sharing。这意味着您的 webappOrigin
在请求中发送一个标头,服务器以一个Access-Control-Allow-Origin
标头响应,如果它们匹配,则浏览器接受该请求。然而,并非所有浏览器都支持这一点,尽管大多数现代浏览器都支持。 - 在您的 opentripplanner-webapp 中使用代理 servlet 代理对您的 API 的请求。您可以“挂载”这个 servlet,例如
/api
在 webapp 中,它会在内部将所有请求转发到 opentripplanner-api-webapp。因此,您会将 AJAX 请求发送到http://webappserver/api
而不是http://apiserver
. 对于浏览器来说,这看起来就像一个普通的同源请求。这适用于所有浏览器,但可能需要更多设置。
于 2013-04-21T08:58:17.503 回答