https访问http加载不出图片_https网页加载http资源导致的页面报错及解决方案

随着HTTPS成为网站主流趋势,与HTTP共存引发兼容性问题。文章讨论了HTTPS加载HTTP资源导致的页面错误,并提出了四种解决方案:复制代码两套、后台协议替换、JavaScript动态加载和资源协议自适配。适配方案对于需要同时支持HTTPS和HTTP的场景至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https是当下的网站的主流趋势,甚至像苹果这样的大公司,则完全要求用户必须使用https地址。

然而对于以前http链接来说,我们往往就存在一个兼容性问题,因为你不可能一下就全部切换过去,应该在很长一段时间内,https与http将共存。

https与http共存的场景有如:

1. app已经发布出去,其调用接口的地址为http的,那么这是必须兼容的。

2. app中嵌入了h5页面,而这页面在以前的设计中是使用http访问的,如果换成https地址,极有可能将导致h5页面无法打开。

3. 对于流量推广一类的业务,可能原有的http推广地址已经发送给第三方,而且即使你通知到第三方要求改为https,也不排除有http地址的访问。

针对以上场景,我们肯定是要https与http共存的。

改https初看起来,其实就是一个域名指向的问题,也许我们只要将http的请求,直接跳转到https地址去,那么也就完成了https的切换。实际并不是这么简单的。

因为https地址中,如果加载了http资源,浏览器将认为这是不安全的资源,将会默认阻止,这就会给你带来资源不全的问题了,比如:图片显示不了,样式加载不了,JS加载不了。因为样式类,基本上都是写在本地的,所以一般还可以,但是一些公共的js文件,往往就是存在于cdn或者其他服务器上,这时候,如果访问不了,可能就导致了业务就完全操作不了。比如:jquery效法加载失败,可能所有的操作、请求都将无效了。

将http请求直接跳转至https请求,是一种解决办法,而且很多公司都是这么干的,比如百度什么的,但是前提是,你所有的服务都已切换https完成。

但是对于,要兼容https、http两种协议的情况,怎样才能做到呢?

1. 最笨的方法,直接复制原有代码,写成两套代码,一套为http使用,一套为https使用,http和https各自指向各自服务。

2. 可用的方法,用同一套代码,在后台请求标识好协议,将该变量传到html页面中,进行协议替换,如:后台变量,$protocol = 'https://';  前台接收变量 src='{$protocol}res.aa.com/jquery.js'。

3. h5方法,使用js自己加载协议情况,如在body onload='aa()', 在aa() 方法中,将资源按照需求加载进来即可。

4. 推荐方法,不指定具体协议,使用资源协议自适配,比如,当前为https页面,那么就是https资源,如果是http页面,那么就是http资源。具体方法超简单:

其实就这么回事,只是在线上遇到这种问题,也很无赖啊。如果在公司管理很严的情况下,由于该问题导致的事故,这将是会受到记过处分的。

自适配是个好东西。

### PyCharm 中图片无法显示但无错误提示的解决方案 当遇到 PyCharm 中图片无法显示的情况,尽管没有报错提示,仍可能存在多种原因。以下是几种常见的排查方法: #### 配置资源文件路径 确保项目的 `__init__.py` 文件或其他适当位置中包含了对图像资源目录的声明。如果使用相对路径加载图像,则需确认工作目录设置正确。 ```python import os from pathlib import Path # 获取当前脚本所在目录作为基础路径 BASE_DIR = Path(__file__).resolve().parent.parent # 构建绝对路径来访问静态文件夹中的图片 image_path = BASE_DIR / 'static' / 'images' / 'example.png' print(image_path.exists()) # 输出 True 表明路径存在 ``` #### 设置正确的环境变量 有时 IDE 的运行配置未能继承系统的环境变量,特别是涉及图形界面库时。尝试通过修改 `.env` 或者直接编辑 Run/Debug Configurations 来指定必要的环境参数[^1]。 #### 更新或重装依赖项 某些情况下,特定版本的第三方库可能会引发兼容性问题。按照官方文档建议升级至最新稳定版或是回退到之前正常工作的版本,并清理缓存重建虚拟环境。 ```bash pip uninstall pillow pip install --no-cache-dir pillow==9.0.1 ``` #### 调整IDE插件状态 禁用不必要的插件尤其是那些与UI渲染有关联的部分;重启PyCharm使更改生效后再测试是否恢复正常显示行为。 #### 检查代码逻辑 仔细审查负责读取和展示图像部分的源码片段,排除潜在编程失误的可能性。比如 Pillow 库处理方式不当可能导致视觉异常现象发生。 ```python from PIL import ImageTk, Image try: img = Image.open('path/to/image.jpg') except IOError as e: print(f"Failed to open image file because {e}") else: photo_image = ImageTk.PhotoImage(img) label.configure(image=photo_image) label.image = photo_image # Keep a reference! finally: pass ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值