【问题标题】:Magento Ajax Request Not Working In Custom ModuleMagento Ajax 请求在自定义模块中不起作用
【发布时间】:2014-03-19 06:39:30
【问题描述】:

尝试在自定义模块中发出 ajax 请求时出现此错误: XMLHttpRequest 无法加载 https://www.vossmarket.com/index.php/shoppinglist/index/showLists/product/4294/form_key/6erZKqom1ynOWDKI/qty/1/。请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'http://www.vossmarket.com' 因此不允许访问。

我假设问题是我从 http 调用 https,但我无法弄清楚它为什么调用 https。我已经在 magento 配置中关闭了 https(我将 secure_base_url 更改为 http://vossmarket.com 并将在前端使用安全 URL 设置为“否”)。现在所有链接都保持http,但是当我访问我的自定义模块时,它仍然重定向(302)到https。这发生在每个链接http://vossmarket.com/shoppinglist(我的自定义模块)上,任何其他路由都保持 http,但任何以任何方式命中我的模块的路由 302s 到 https

有什么想法可能会发生什么或解决它的最佳方法吗?

【问题讨论】:

  • 您找到解决方案了吗?
  • 不,我最终只需要运行 HTTP。我什么都做不了。

标签: ajax magento https


【解决方案1】:

您是否尝试过将名为 crossdomain.xml 的文件放入您的 Web 根目录(可通过 http 和 https 访问),即 http(s)://vossmarket.com/crossdomain.xml

这应该有助于定义 http 和 https 之间允许跨站点来源。

在您的情况下,我认为自定义模块对通过 http 访问感到不安,并将 302 发送到您的浏览器,因此需要研究自定义模块的控制器操作以找出它为什么强制执行https(而不是询问 Magento 的安全 URL 是什么)。

实际上,如果您尝试使用此 crossdomain.xml,您将需要浏览器从 http 加载页面请求 https,否则我认为您仍将获得 302 重定向 - 但使用 crossdomain.xml,您应该能够 XMLHttpRequest从http://vossmarket.comhttps://vossmarket.com

但是,你知道,通常有充分的理由使用 https,所以我认为你应该理解为什么强制使用 https,而且我不知道 XML 安全 =“false” - 这真的意味着 https 请求是通过http返回?我希望不会,但我不知道。

有关 CORS 的更多信息,尽管您的“跨域”是 http 跨域到 https。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 2012-06-10
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多