Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在HTTPS连接上显示非SSL映像?_Ssl_Image_Https - Fatal编程技术网

如何在HTTPS连接上显示非SSL映像?

如何在HTTPS连接上显示非SSL映像?,ssl,image,https,Ssl,Image,Https,在我的https网站上,如何显示没有证书的网站上的图像 我拥有以下示例域: http://wwwexample.com http://static.example.com(用于我的CDN) 我拥有www.example.com的证书,但不拥有static.example.com的证书 在我的www.example.com域上,您可以使用httpS://www.example.com通过SSL注册服务 在注册表(www.)上,我想显示来自我的CDN的图像,它位于http://static.ex

在我的https网站上,如何显示没有证书的网站上的图像

我拥有以下示例域:

  • http://wwwexample.com
  • http://static.example.com(用于我的CDN)
我拥有www.example.com的证书,但不拥有static.example.com的证书

在我的www.example.com域上,您可以使用httpS://www.example.com通过SSL注册服务

在注册表(www.)上,我想显示来自我的CDN的图像,它位于http://static.example.com上,但不拥有该子域的证书

在https://www.example.com 注册表单-我正在使用AJAX动态地从http://static.example.com. 在使用AJAX时,web浏览器似乎根本不显示非SSL图像。但是,如果该图像位于httpS://www.example.com域(与注册表相同),则该图像将通过AJAX显示

出于架构和设计方面的原因,我希望在我的CDN(static.example.com)上保留这些图像,而无需购买证书

有人知道我如何通过AJAX在我的httpS://www.example-domain上的非SSL子域中显示这些图像吗


提前感谢。

就像您将包含https图像一样:

<img src="http://www.google.com/intl/en_ALL/images/logo.gif" />


不过,有些浏览器可能会向用户抱怨,您正在为安全页面加载不安全的资源。对此您无能为力。

如果没有static.example.com证书,在某些浏览器(特别是Internet Explorer)中不会触发安全警告或提示,则无法执行此操作

GoDaddy以30美元的价格出售SSL证书。我想用spring来换取一点现金。

为了扩展,您需要通过AJAX下载图像吗? 您可以将AJAX调用替换为:动态添加IMG元素

function load_image_instead_of_ajax_call(dom_parent_element,image_url) {
    var img = document.createElement('img');
    img.onload = your_success_callback_function;
    img.onerror = your_error_callback_function;
    img.src = image_url;
    dom_parent_element.appendChild(img);
}
这样,您的图像资源就会加载,并在成功/错误时进行适当的回调


一些浏览器可能会抱怨您的页面同时包含http和https内容,但这并不常见(在大多数浏览器中,这似乎是默认关闭的)。

我知道这是一个非常老的问题,但我想无论如何还是要投入0.02美元

我假设的子域也是的子目录/文件夹,就像现在大多数托管的情况一样

你可以改变这一点,但浏览到…你看到的页面是否与浏览到时看到的页面相同

如果这是真的,你可以像这样输入图像

另一种可能性是使用许多托管提供商提供的共享证书。请与托管公司的支持人员联系。他们通常是这样的


希望你们都觉得这很有用

您必须通过使用
HTTPS://
引用在通过HTTPS提供的页面上提供链接或嵌入(直接或通过AJAX)的所有内容


解决第三方、普通HTTP内容问题的一种方法是,通过使用HTTPS的反向代理(可能在您的站点或服务上)提供该内容。这样做可能有法律含义,这取决于它是否被视为仅仅代理或复制内容(可能类似于谷歌缓存所做的)。此外,通过这样做,您可以有效地为以这种方式嵌入的内容提供担保。

您可以创建自己的ssl代理

通过此脚本运行所有图像。 只需创建一个文件并将此PHP代码放入其中。使用
curl
file\u get\u contents
回显内容

因此,如果要调用安全映像,请按如下方式调用它:

https://mysecureserver.com/path_to_this_script/?url=[base64编码图像链接]


我在运行本地新闻聚合器时遇到了这个问题,我最终使用PHP的副本将图像拉到我的服务器上,然后通过SSL为它们提供服务


使用AJAX时,浏览器没有机会抱怨,因为图像正在动态加载。。。相反,浏览器根本不显示图像。哪一个是整个问题,围绕这个行为的任何方式?“哪一个是整个问题”,呵呵。。。直到你完全改变了它。但这不安全。人们使用ssl的全部原因都是出于隐私,发送http图像有什么意义?最好在这里发布答案,而不是直接让访问者浏览博客文章,尤其是对于一个非常老的问题。我编辑了这个问题,以使用用户在博客文章中给出的答案,并删除了外部链接。需要补充的一点是。。。“我的服务器配置”会阻止包含“==”的请求(因为它们通常用于恶意扫描活动)
base64_encode
字符串通常以“==”结尾。这可以通过在创建时使用
urlencode(base64\u encode($url))
纠正,然后在上面的代码中使用
base64\u decode(urldecode(@$\u GET['url']))
纠正。这很好,但要注意这里的安全问题。确保只允许获取域的某些URL。。。又名白名单域名。对不起,但我想说这是质量不好的代码。一般的方法是有效的,但是:从请求的url派生mimetype是可怕的!它应该从实际加载的图像中导出。更健壮的是使用后端服务器发送的那些头(包括内容类型头)。这应该最清楚什么标题是合适的。请注意,这将根本无法解决拥有CDN的问题,因为CDN的任务是从不同的服务器上发送内容,但此解决方案将通过您的服务器发送内容。因此,您的服务器将把映像发送到CDN,然后从CDN取回它。因此,如果您这样做,那么只需停止CDN并从服务器提供静态内容,那么就不会有PHP开销