Wicket - Apache URL重写Access-Control-Allow-Origin问题

时间:2013-09-23 14:39:57

标签: java ajax apache url-rewriting wicket

我面临一个奇怪的问题。我在这个页面的http://account.dev.pippo.com/account/UserPage上的UserPage上有一个DropDown组件来过滤listview(使用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);

(我将此页面使用的所有面板和自定义组件移到同一个包中)

不应该使用当前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"});;

1 个答案:

答案 0 :(得分:0)

根据wicket邮件列表收到的提示,目前有一个错误可以解决此问题:https://issues.apache.org/jira/browse/WICKET-5043

Martin Grigorov建议的解决方法如下:

  

添加:

mountPage("/account/UserPage", UserPage.class);
     

并检查生成的标记。我希望看到类似的东西:

Wicket.Ajax.ajax({"u":"./?3-1.IBehaviorListener.0-content-contentList-layout-contentRight-overview-dateRange-listViewDateRangeOptions","e":"change","c":"listViewDateRangeOptions13","ad":true,"m":"POST"});;
     

这个网址不应该在前面有“wicket / page”。