ssl 更改后的 OpenCart 图像管理器问题 (1.5.6.4)
OpenCart image manager issue after ssl change (1.5.6.4)
我有 OpenCart 1.5.6.4,我决定在网站上添加 ssl。我已经更改了 config.php 文件(root 和 admin)并且还强制所有请求为 https。除了图像管理器(管理员)之外,网站在一些小的修复后工作正常。
它不显示图片,我可以看到文件夹、文件名和大小,但看不到缩略图。我已经清除了缓存,我可以看到它们已重新创建,但它仍然没有显示在图像管理器中。
我检查了网络,图像控制器被调用并且它的响应是正确的(来自缓存文件夹的缩略图)但是每个图像(缩略图)生成一个新的 http 请求错误 url。
而不是:https://<website>/image/cache/data/<image>
Url 是:
https://<website>/admin/%EF%BB%BF%EF%BB%BF%EF%BB%BFhttps://<website>/image/cache/data/<image>
或者我在请求视图中看到的:
https://<website>/admin/https://<website>/image/cache/data/<image>
我找不到 HTTP_SERVER 或 HTTPS_SERVER(它们相同)在哪里附加。
编辑:
我找到了问题所在,我还在寻找解决方案。
路径:admin - view - template - common
文件:filemanager.tpl
$.ajax({
url: 'index.php?route=common/filemanager/image&token=<?php echo $token; ?>&image=' + encodeURIComponent('data/' + $(element).find('input[name=\'image\']').attr('value')),
dataType: 'html',
success: function(html) {
$(element).find('img').replaceWith('<img src="' + html + '" alt="" title="" />');
}
});
结果 html 前面有 UTF-8 BOM,这导致了这个问题。
如果您知道如何删除它,请告诉我们!
你能检查你的 cpanel 中的热 link 保护吗,你是否列出了 https too.I 图片也有问题,它们在结账时没有显示。一旦我启用了热 link 保护,它就起作用了。
问题已解决!
UTF-8 BOM 是 3 倍,这很奇怪,只有一个 UTF-8 文本的响应,所以如果问题是它应该是一个 BOM。我将文件下载到我的 PC 上,并检查了 文件编码 (在调查网络和 AJAX 代码 3 天后)。当我从托管提供商的文件管理器中进行更改时,它们从没有 BOM 的 UTF-8 更改为 UTF-8。看起来它正在将 BOM 添加到响应中。
将文件编码改回 UTF-8 无 BOM 后一切恢复正常。图像显示给图像管理器并且 AJAX 响应是干净的。
我有 OpenCart 1.5.6.4,我决定在网站上添加 ssl。我已经更改了 config.php 文件(root 和 admin)并且还强制所有请求为 https。除了图像管理器(管理员)之外,网站在一些小的修复后工作正常。
它不显示图片,我可以看到文件夹、文件名和大小,但看不到缩略图。我已经清除了缓存,我可以看到它们已重新创建,但它仍然没有显示在图像管理器中。
我检查了网络,图像控制器被调用并且它的响应是正确的(来自缓存文件夹的缩略图)但是每个图像(缩略图)生成一个新的 http 请求错误 url。
而不是:https://<website>/image/cache/data/<image>
Url 是:
https://<website>/admin/%EF%BB%BF%EF%BB%BF%EF%BB%BFhttps://<website>/image/cache/data/<image>
或者我在请求视图中看到的:
https://<website>/admin/https://<website>/image/cache/data/<image>
我找不到 HTTP_SERVER 或 HTTPS_SERVER(它们相同)在哪里附加。
编辑:
我找到了问题所在,我还在寻找解决方案。
路径:admin - view - template - common
文件:filemanager.tpl
$.ajax({
url: 'index.php?route=common/filemanager/image&token=<?php echo $token; ?>&image=' + encodeURIComponent('data/' + $(element).find('input[name=\'image\']').attr('value')),
dataType: 'html',
success: function(html) {
$(element).find('img').replaceWith('<img src="' + html + '" alt="" title="" />');
}
});
结果 html 前面有 UTF-8 BOM,这导致了这个问题。
如果您知道如何删除它,请告诉我们!
你能检查你的 cpanel 中的热 link 保护吗,你是否列出了 https too.I 图片也有问题,它们在结账时没有显示。一旦我启用了热 link 保护,它就起作用了。
问题已解决!
UTF-8 BOM 是 3 倍,这很奇怪,只有一个 UTF-8 文本的响应,所以如果问题是它应该是一个 BOM。我将文件下载到我的 PC 上,并检查了 文件编码 (在调查网络和 AJAX 代码 3 天后)。当我从托管提供商的文件管理器中进行更改时,它们从没有 BOM 的 UTF-8 更改为 UTF-8。看起来它正在将 BOM 添加到响应中。
将文件编码改回 UTF-8 无 BOM 后一切恢复正常。图像显示给图像管理器并且 AJAX 响应是干净的。