2012-02-12 26 views
3

我在我的网站上有一个SSL证书。一旦图像从另一个网站加载到页面上,它会导致警告类型为“该页面包含安全和非安全项目”,因此您必须按OK或在浏览器中看到“破损”的ssl连接。转义该警告的方法之一是使用http页面而不是https,是否正确?https和来自其他站点的图像。如何在不修改.htaccess文件的情况下使用php或javascript去除http图像的警告?

但据我所知,还有另一种方法可以使用php或仅使用javascript排除该警告。我相信这些图像会加载到我的服务器上的临时文件夹中,并且会同时加载为https图像。 有谁能告诉我这样做的最好方法吗? 浏览论坛并没有多大帮助。 谢谢。

那么, 如何加载

<?php echo '<img src="http://www.not_my_site.com/image.jpg" alt="">'; ?> 

https://my_site.com/index.php页面没有任何警告?

+0

好了,如果你不需要动态加载我想,最简单的解决方法是将您的服务器上保存这些图片,并从那里读取它的图像。 – alfasin 2012-02-12 10:52:55

+0

是的,这是一个很好的解决方案,我正在考虑这个问题。但是,这样你必须先手动加载它们(保存 - >选择一个文件夹)。如果偶尔发生一次,那就是一笔交易。但是,如果它更频繁地发生......无论如何,我听说有一个我问过的解决方案。如果我没有找到它,你的建议将是最后的选择,并且很好。非常感谢。 – Haradzieniec 2012-02-12 10:59:39

+0

@Haradzieniec看我的例子,我已经进一步澄清了这个过程。 – twilson 2012-02-12 11:04:35

回答

2

你无法抑制错误,因为它是浏览器的东西。

唯一的方法就是在您的网站上使用https呼叫打包这些呼叫。喜欢的东西:

<?php echo '<a href="https://my_site.com/external.php?resource=http://www.not_my_site.com/image.jpg" alt="">'; ?> 

你将不得不写external.php脚本,以代表客户机的请求,然后在你现有的SSL连接返回内容。 您只需要为外部HTTP专用资源执行此操作。

这一过程将工作方式如下:

  1. 最终用户的网络浏览器发出HTTPS请求您external.php脚本。
  2. 检查保存的资源副本。如果你已经缓存了,那么跳到步骤6,返回缓存的资源。
  3. 您的服务器将呼叫转接到指定为resource的HTTP资源。
  4. 远程服务器响应请求。
  5. 保存资源的副本以进行缓存。
  6. 然后,您的web服务器external.php脚本通过SSL连接返回该响应。

Web浏览器只发出1个请求,您的Web服务器只需要额外添加一个。

这是您能够摆脱消息的唯一方法。


看起来更简单检索图像:use curl to download indirect image file

+0

上使用HTTPS流,并建议您为每个图像生成两个http/s调用? – alfasin 2012-02-12 10:55:25

+0

我已经添加了更多关于如何完成这项工作的细节。 – twilson 2012-02-12 11:07:22

+0

谢谢你的解释。不幸的是,它仍然不清楚......好的,你有index.php。它希望从另一个站点加载image.jpg而不会有任何警告。 external.php包含哪些代码?谢谢。 – Haradzieniec 2012-02-12 11:10:24

2

它发生会导致您做了非安全(HTTP)从固定页面调用(HTTPS)。

试着改变你的代码:

<?php echo '<a href="https://www.not_my_site.com/image.jpg" alt="">'; ?> 
+0

这不起作用,因为不能保证外部源响应HTTPS请求。 – twilson 2012-02-12 10:36:45

+1

@twilson你的意思是说:它可能不工作,以防“不是我的网站”不支持安全请求。 – alfasin 2012-02-12 10:42:19

+0

语义,但是是的,我想这会是一个更好的回应。 – twilson 2012-02-12 10:46:09

相关问题