尝试在自定义模块中创建ajax请求时出现此错误: XMLHttpRequest无法加载https://www.vossmarket.com/index.php/shoppinglist/index/showLists/product/4294/form_key/6erZKqom1ynOWDKI/qty/1/。请求的资源上不存在“Access-Control-Allow-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
任何想法可能会发生什么或解决它的最佳方法?
答案 0 :(得分:0)
您是否尝试在网络根目录中放置一个名为crossdomain.xml的文件(可通过http和https访问),即http://vossmarket.com/crossdomain.xml
这应该有助于定义http和https之间允许跨站点来源。
在您的情况下,我认为自定义模块对通过http访问并将302发送到您的浏览器感到不安,因此将研究自定义模块的控制器操作以找出它强制的原因https(而不是向Magento询问安全URL是什么)。
实际上,如果你尝试这个crossdomain.xml,你需要浏览器从http加载页面请求https,否则我认为你仍然会得到302重定向 - 但是如果有crossdomain.xml,你应该能够使用XMLHttpRequest从http://vossmarket.com到https://vossmarket.com
但是,你知道,通常有充分的理由要求https,所以我认为你应该理解为什么要强制使用https,而且我也不知道XML secure =“false” - 这是否真的意味着https请求是通过http返回?我希望不是,但我不知道。
有关更多信息,请阅读CORS,尽管您的“跨域”是http穿越https。