Javascript Opencart-产品描述中插入的图像是http而不是https
我们使用的是Opencart 1.5.5.1(我知道这是一个过时的版本,但是以前的开发人员几乎将所有内容硬编码到核心文件中,因此目前无法升级到最新版本) 我最近浏览了整个网站,将所有出现的Javascript Opencart-产品描述中插入的图像是http而不是https,javascript,php,ssl,ckeditor,opencart,Javascript,Php,Ssl,Ckeditor,Opencart,我们使用的是Opencart 1.5.5.1(我知道这是一个过时的版本,但是以前的开发人员几乎将所有内容硬编码到核心文件中,因此目前无法升级到最新版本) 我最近浏览了整个网站,将所有出现的http://更改为https://,并修复了一些Opencart核心bug。例如,签出页面上的一个众所周知的问题(catalog/controller/checkout/cart.php,第170行): 更改为: $this->data['action'] = $this->url->lin
http://
更改为https://
,并修复了一些Opencart核心bug。例如,签出页面上的一个众所周知的问题(catalog/controller/checkout/cart.php,第170行):
更改为:
$this->data['action'] = $this->url->link('checkout/cart');
为此:
$this->data['action'] = $this->url->link('checkout/cart', '', 'SSL');
如上所述,我能够轻松解决大多数问题
但是。。。我的问题是文件管理器。每当我想使用所见即所得编辑器中的“插入图像”功能链接产品描述中的图像时,它会自动创建一个http://
链接,而不是https://
。当然,这会破坏该页面上的SSL,到目前为止,我找到的唯一解决方案是手动将插入的图像链接从http
更改为https
我试过的。。。我浏览了文件管理器的控制器文件(admin/controller/common/filemanager.php),试图找到一个生成图像链接的位置,似乎Opencart正在将相对路径传递给ckEditor的image.js
插件,然后我猜它会创建整个链接(但我不是100%确定)。不幸的是,我对Javascript不是很在行,而且image.js
被缩小了。在询问之前,我试着用谷歌搜索一下,我找到了几个关于这个问题的论坛帖子,但没有一个真正提到过解决这个问题的方法(或者我可能错过了)
任何Opencart的大师,谁遇到过同样的事情,并能为我指出正确的方向,请
事先非常感谢
编辑:我在Admin/System/Settings中启用了SSL,我的.htaccess文件将每个http页面请求重写为https。我已经设法解决了这个问题。如果其他人有相同问题,请执行以下操作: 打开
admin/controller/common/filemanager.php
。转到第35行:
$this->data['directory'] = HTTP_CATALOG . 'image/data/';
将其更改为:
if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
$this->data['directory'] = HTTPS_CATALOG . 'image/data/';
} else {
$this->data['directory'] = HTTP_CATALOG . 'image/data/';
}
我希望有帮助
编辑:我刚刚检查过,这个问题仍然存在于1.5.6.4中,因此它可能对其他人也是一个实际的修复。我对https://url和CKEditor的图像选择器都有同样的问题。我也在Opencart 1.5.5.1:)上,需要更改CKE配置,以便插入带有不包括协议、域名/IP地址等的相对URL的图片 我试图搜索负责构建完整URL的代码,但找不到它。谢谢你指出,这很有帮助 我的解决方案是基于你的。然而,我原来的代码看起来有点不同。无论如何,我从我的
admin/controller/common/filemanager.php
中获取了以下部分:
$this->data['directory'] = HTTP_IMAGE . 'data/';
。。。并将其替换为:
$this->data['directory'] = str_replace(HTTP_CATALOG, '/', HTTP_IMAGE) . 'data/';
这不会检查是否启用了HTTPS,因为这实际上并不重要——所选文件的路径相对于根目录,而与协议无关
这是我制作的完整vQmod:
<modification>
<id>forcing ckeditor to use relative paths for images</id>
<version>1.5.5.x</version>
<vqmver></vqmver>
<author>Stackoverflow Comunity</author>
<file name="admin/controller/common/filemanager.php">
<operation>
<search position="replace"><![CDATA[
$this->data['directory'] = HTTP_IMAGE . 'data/';
]]></search>
<add><![CDATA[
// make sure HTTP_CATALOG has a trailing slash
// check admin/config.php
$this->data['directory'] = str_replace(HTTP_CATALOG, '/', HTTP_IMAGE) . 'data/';
]]></add>
</operation>
</file>
</modification>
强制ckeditor为图像使用相对路径
1.5.5.x
Stackoverflow社区
数据['directory']=HTTP_IMAGE'数据/';
]]>
数据['directory']=str_replace(HTTP_目录,'/',HTTP_图像)。'数据/';
]]>
再次感谢您分享您的解决方案。这很有帮助为什么不在.js中按Ctrl+F,然后在文件中搜索字符串“http://”?迷你们不能触摸字符串,因此您可以轻松地将该部分替换为“https://”。如果链接是在另一个文件中生成的,也可以这样做。事实证明,URL的生成是在filemanager.php中处理的,这就是它获得HTTP链接而不是HTTPS的地方。根据Opencart的开发者的说法,它应该是这样的。这没有任何意义,因为安全页面上的非安全资源会破坏安全层。