【问题标题】:Wicket - Apache URL rewrite Access-Control-Allow-Origin issueWicket - Apache URL 重写 Access-Control-Allow-Origin 问题
【发布时间】: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


【解决方案1】:

根据通过 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”。

【讨论】:

    猜你喜欢
    • 2016-04-22
    • 1970-01-01
    • 2016-09-20
    • 2019-02-06
    • 2013-08-21
    • 2011-11-05
    • 1970-01-01
    • 2023-02-14
    相关资源
    最近更新 更多