html文件通过script标签引入外部js文件,但没正确加载的原因
移动端H5应用,html文件通过script标签引入外部js文件,但没正确加载,在移动设备上难以排查。通过PC浏览器打开,发现js被阻止了:blocked:mixed-content
。
原因在于:
- “blocked:mixed - content” 是浏览器的一种安全策略导致的错误提示。它表示网页中包含了混合内容,即同时包含安全(通常是通过https协议加载)和不安全(通常是通过http协议加载)的资源。
- 现代浏览器为了增强安全性,默认会阻止这种混合内容的加载。HTML 文件可能是通过https协议加载的,而 JavaScript 文件(http://g.alicdn.com/dingding/open-develop/1.9.0/dingtalk.js)是通过http协议加载的,这就触发了浏览器的安全机制。
解决方法:
- 升级资源链接协议:如果可能的话,将 JavaScript 文件的加载协议也升级为https。例如,如果资源有对应的https版本,可以将src属性修改为src = “https://g.alicdn.com/dingding/open-develop/1.9.0/dingtalk.js”。这样可以确保整个页面的资源加载都是安全的,符合浏览器的安全策略。
- 调整服务器配置(较复杂):如果无法直接升级资源链接协议,在某些情况下,可以通过配置服务器来允许混合内容的加载。不过这种做法会降低网页的安全性,并且可能会给用户带来安全风险,一般不推荐。具体的服务器配置方法因服务器类型(如 Apache、Nginx 等)而异。例如,在 Nginx 服务器中,可以通过配置add_header Content - Security - Policy “upgrade - insecure - requests”;来尝试自动将http请求升级为https请求,但这也需要服务器对https有正确的支持。
- 将js下载到项目中引入