我已经将必要的域添加到白名单/ CSP规则中。实际重定向到真实来源的图像源 - 例如:
https://twitter.com/user_name/profile_image?size=bigger
使用ng-src时中断,但仅限Android或使用Chrome开发工具屏幕尺寸模拟器(设置为移动设备屏幕分辨率之一)。它适用于在IOS上运行Ionic和全屏浏览器。浏览器或日志中没有抛出任何错误。世界上可能发生什么?
这是运行完全相同代码的两个屏幕截图,只是在不同的屏幕尺寸中重新加载
同样,这两个屏幕截图之间的代码不会改变。控制台中的错误在两者之间完全不相关且一致。任何想法从哪里开始?
编辑:要清楚,在第一个屏幕截图中加载的图像来自Instagram,而不是Twitter的重定向配置文件图像URL。没有任何Twitter加载在较小的屏幕分辨率,但所有Instagram的。对应用于这些项目的任何类都没有特定于屏幕大小的CSS规则。
另外,如果我用重定向着陆的url替换src,图像就可以正常显示。
答案 0 :(得分:0)
我认为合理的推论可能会将错误原因与User-Agent联系起来。
由于图像在移动设备上中断,这意味着图像的src没有被重定向到有效的图像资源。
您可以在上面的Twitter网址中看到这一点。检查开发人员工具中的网络请求。在正常模式下,它会重定向到正确呈现的有效图像。但在响应模式下,图像会重定向到“mobile.twitter”。在该域中不存在域和相同的URI。
解决方案? 也许通过ajax加载图像,但是twitter不允许跨源请求! 如果确实需要,我认为你可以编写一个简单的脚本,从传递的URL中提取图像位置,然后将其设置为响应中的重定向位置,或者甚至可以下载图像数据并回复数据本身。
或者您可以尝试覆盖Cordova中的userAgent。将其设置为非移动浏览器,我想图像将正确加载。 请参阅以下问题以了解有关如何执行此操作的更多信息: How i can set User Agent in Cordova App
这是我在第一次尝试时能想到的。