在https中引入http资源所导致的问题

本文探讨了在HTTPS页面中引入HTTP资源导致的浏览器安全问题,如Mixed Content。解释了HTTPS与HTTP的区别,并介绍了混合内容的概念。提出了解决方案,即使用相对协议,根据当前网站协议自动选择HTTP或HTTPS。文章还强调了在开发过程中需要注意的细节,例如检查和测试正式服的资源协议。

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

前言

最近在周报系统和格子机项目中都出现了在测试服能够正常运行,部署到正式服之后就出现问题,这些问题的原因就是:一般测试服都没有安全性的需求,所以都是使用http协议。但是正式服现在一般都是使用更加安全的https协议。

问题

问题的关键就是在于这个协议的问题,浏览器默认是不允许在https里面调用http资源的。在这里根据我所遇到的情况大概是这样子的:

  1. 在IE浏览器浏览器中使用链接加载资源时会弹出一个对话框:

avatar

  1. 在微信的浏览器中引入图片资源时会报一个警告(但是图片会正常加载):

avatar

  1. 在https页面中向http地址发起ajax请求时,浏览器会阻止掉这个请求,然后报一个Mixed Content的错误。
  2. 在https页面中使用webSocket时需要注意,必须使用wss协议才能够发起连接,不然也会报错:

avatar

问题分析

https协议与https协议的区别

在解决这个问题之前首先需要知道https是什么,与http的区别在什么地方。

### SSM框架中CSS文件样式显示不完全解决方案 在Spring MVC项目中,静态资源(如CSS、JavaScript和图片)通常放置于特定目录下以便被正确加载。当遇到CSS文件样式无法完全显示的情况时,可能是因为静态资源配置不当所致。 为了使静态资源能够正常访问,在`web.xml`或者基于Java配置的方式里需要设置相应的映射规则[^1]: 对于采用XML方式配置的应用程序而言,可以在`web.xml`中加入如下片段来允许对静态资源的请求穿透到物理路径: ```xml <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> <url-pattern>*.js</url-pattern> <!-- 可继续添加其他类型的静态资源 --> </servlet-mapping> ``` 而在纯注解驱动下的Spring Boot应用,则可以通过重写`addResourceHandlers()`方法实现相同功能[^2]: ```java @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); } } ``` 另外一种常见情况是由于浏览器缓存导致旧版本的CSS文件未更新。此时可以尝试清除浏览器缓存或是在URL后面加上时间戳参数以强制刷新资源,例如通过修改HTML模板中的链接形式为`<link rel="stylesheet" href="/path/to/style.css?v=timestamp">`。 最后还需确认服务器端确实存在所引用的静态文件,并且其权限设置允许外部读取;同时也要注意检查是否存在网络传输过程中可能出现的数据丢失等问题。 #### 注意事项 - 配置完成后重启应用程序确保更改生效。 - 如果使用了前端构建工具(如Webpack),则需按照相应文档调整打包后的静态资源位置及引入方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值