图像未在 <img> 标记中加载 ftp url

Posted

技术标签:

【中文标题】图像未在 <img> 标记中加载 ftp url【英文标题】:Image is not loading in <img> tag with ftp url 【发布时间】:2017-05-08 19:34:04 【问题描述】:

我正在尝试使用 img 标签在我的 ionic/cordova 应用程序中显示用户的照片,如下所示,

 <img src="ftp://10.132.21.100/PatientPhoto/Temp_emp.jpg" />

图片没有在APP中显示(资源加载失败错误)。但是如果我在我的 android 移动浏览器中输入相同的 URL(ftp://10.132.21.100/PatientPhoto/Temp_emp.jpg),我可以查看图像。我正在运行调试版本,所以我想这不是权限问题。我通过在 config.xml 文件中添加以下行来完成白名单,

<access origin="*"/>

我也尝试添加以下行,但没有任何成功,

<allow-intent href="ftp://*/*" />
<allow-navigation href="ftp://*/*" />

还在html文件中添加了Content-Security-Policy,如下,仍然面临同样的问题。

<meta http-equiv="Content-Security-Policy" content="default-src *; script-src 'self' 'unsafe-inline' 'unsafe-eval' *; style-src  'self' 'unsafe-inline' *">

如果我为 img src 使用 http URL,它就可以工作。图像存储在 ftp 服务器中,所以我不能使用 http URL。任何建议都非常感谢。

【问题讨论】:

请添加一些代码 @Neotrixs,添加代码 我建议您最好将“FTP”更改为“HTTP”,还有一件事,请在配置文件中授予 URL 权限。 URL 应该用引号引起来。一些浏览器可能会让这种情况发生,但您的应用可能不会那么宽容。 您在 android 或 ios 中遇到过这个问题? 【参考方案1】:

您需要安装cordova whitelist plugin 并配置您的config.xml 文件。

请添加以下标签:&lt;allow-intent href="ftp://*/*" /&gt;

或者如果你想允许一切:&lt;access origin="*"&gt;

【讨论】:

即使在将 添加到 config.xml 文件后也会出现同样的问题【参考方案2】:

您可以尝试像这样修改您的 src 属性:

 <img src="ftp://yourusername:yourpassword@10.132.21.100/PatientPhoto/Temp_emp.jpg"/>

它会起作用,但你会给每个人你的 ftp 密码。不要在实时网站上使用它

【讨论】:

您可以创建一个匿名/访客帐户,使用任何密码【参考方案3】:

您是否有内容安全策略标头:

<meta http-equiv="Content-Security-Policy" />

您需要在显示图像的页面上使用它。

请参阅以下链接以获取指针:https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-whitelist/#content-security-policy

【讨论】:

是的。我添加了 Content-Security-Policy。还是一样的问题 尝试将 img-src * 添加到您的 CSP 中 我试过了,还是不行。 【参考方案4】:

在“”和确保您的服务器正在运行之间提供 src

【讨论】:

引号 ("") 也有同样的问题 想知道你是否解决了这个问题。我有一个类似的问题。使用上面提到的代码&lt;img src="ftp://yourusername:yourpassword@10.132.21.100/PatientPhoto/Temp_emp.jpg"/&gt; 在除 Firefox 之外的任何浏览器中都适用于我。我想知道是否有可能让它在Firefox中工作。不过,我确实使用 iframe 让它工作。

以上是关于图像未在 <img> 标记中加载 ftp url的主要内容,如果未能解决你的问题,请参考以下文章

RateIt jquery 插件的图像未在 asp.net 中加载?

图像在 iframe 中加载后未从缓存中加载

来自html字符串的iOS Swift 4图像未在WKWebView中加载

如何在HTML5 / JavaScript中加载/卸载图像

在 <img> 中加载 SVG 时,Chrome 会发出警告

图像未在 Flutter 中加载