嵌入来自其他服务器的图像 - 为什么它可以在Firefox中运行,但不能在Chrome或IE中运行

时间:2015-12-15 17:27:55

标签: php google-chrome internet-explorer

我正在开发一种工具,可以从几个来源获取信息 - 主服务器(用于数据提取)和voip电话(用于屏幕截图)。除了一个特别棘手的问题外,一切似乎都运转正常;当Chrome和IE中显示该页面时,我无法呈现屏幕截图。在Firefox中,它看起来很好。

<table class="phoneScreen;" border='0'>
        <tr><td><table class="phoneScreen" align=center style="width:95%"><tr><td><img src="http://username:password@<?php echo $ip; ?>/CGI/Screenshot" style="width:100%;"></td></tr>

    </table>

此组件http://username:password@ipAddress/CGI/Screenshot是主要问题。当我手动输入链接时,它可以工作。但作为网页的一部分,它没有。页面通过http(而不是https)呈现,因此混合安全性不是此页面上的问题。

更新:在使用Google Chrome控制台查看该页面时,当页面尝试从屏幕截图中提取图像时,我收到“无法加载资源:服务器响应状态为401(未授权)”。不寻常,因为当我在另一个标签中复制并浏览该链接时,似乎有效。

1 个答案:

答案 0 :(得分:1)

<img src="username:password@ipAddress/CGI/Screenshot"/>

所有浏览器都不支持此功能,因为用户名和密码会暴露给客户端,所以不安全。

其他选项:<img/> src应指向呈现原始页面的同一服务器(相同的源策略)。使用所需的用户名和密码通过服务器端代码从不同的服务器获取原始映像,将映像发送回客户端,这样就不需要向客户端公开用户名和密码。