【发布时间】:2013-09-28 12:31:30
【问题描述】:
我遇到了一个奇怪的问题。我在 http://account.dev.pippo.com/account/UserPage 的 UserPage 在此页面中我有一个 DropDown 组件来过滤列表视图(使用 Ajax)。 从下拉列表中选择一个值时,XMLHttpRequest 是针对http://dev.pippo.com 而不是http://account.dev.pippo.com/account 完成的。这会导致 Access-Control-Allow-Origin 问题:
XMLHttpRequest cannot load https://dev.pippo.com/wicket/page?3-1.IBehaviorListener.0-c…ontentList-layout-contentRight-overview-dateRange-listViewDateRangeOptions. Origin https://account.dev.pippo.com is not allowed by Access-Control-Allow-Origin.
我有一个预先设置帐户的 Apache 重写规则。使用 /account 时的 URL。
/account URL 使用以下方式挂载:
mountPackage("/account", UserPage.class);
(我将本页使用的所有面板和自定义组件移动到同一个包中)
wicket 是否应该使用当前 URL (http://account.dev.pippo.com) 作为 Ajax 请求的目标(以避免浏览器阻塞请求)?
为什么会这样?这是一个检票口错误吗?
我使用的是 Apache Wicket 6.9.1。
非常感谢。
编辑: 在标记文件中,我有以下 AJAX 请求
Wicket.Ajax.ajax({"u":"../wicket/page?3-1.IBehaviorListener.0-content-contentList-layout-contentRight-overview-dateRange-listViewDateRangeOptions","e":"change","c":"listViewDateRangeOptions13","ad":true,"m":"POST"});;
【问题讨论】:
-
Wicket 默认会渲染相对 url。请在生成的 HTML 标记中检查 AjaxFormComponentUpdatingBehavior 的 url,在
-
感谢 Sven,请参阅我的编辑,问题是调用是在 /wicket/page (../) 而不是 /account/wicket/page (./) 上执行的(因此不会触发URL 重写)。我该如何解决这个问题?
标签: java ajax apache url-rewriting wicket