首页/ 填坑/ 文章详情

HTTPS调用HTTP资源:This request was automatically upgraded to HTTPS

项目在本地环境测试后,将项目部署到阿里云服务器。初始默认使用HTTP协议,Chrome浏览器地址框显示:不安全。如果网站仅内部使用,那没什么事,可对外开放,网民自然对该网站保持的不信任。对SEO收录网站是否影响不知道,不过过于醒目的提示,实在不能忍。

幸好,阿里云有免费SLL证书,需要主动申请,使用期限一年,次年可以再续。本着白要白不要原则,将HTTP升级到HTTPS,再次打开网站。

Mixed Content: The page at 'https://www.didaolan.cn/'  was loaded over HTTPS, but requested an insecure  element 'http://www.didaolan.cn/dist/css/style.css'. This  request was automatically upgraded to HTTPS, For  more information see  https://blog.chromium.org/2019/10/no-more-mixed- messages-about-https.html

Console框查看到错误信息,由于升级到HTTPS,引入的资源依旧还是使用HTTP,导致资源不能正常被引用进来。最简单的方法,手动将http全部改成https。可SLL证书到期后,HTTPS又会自动降级到HTTP,为了兼容意外情况,可直接省略协议前缀,交由浏览器自动识别,如:

HTML<link href="//www.didaolan.cn/dist/css/style.css?v=2021032901" rel="stylesheet" type="text/css">

对于静态资源可以手动修改,那动态资源呢?一般网站,建站时间久,历史等原因,数据库保存的数据都是http引用的附件资源,不可修改数据库的情况下。下载前,直接用JS替换地址。

JS/**
 * 规换Https
 * @method replacehHttps
 * @param {String} url 链接地址
 * @return {String}
 */
var replaceHttps = function (url) {
    if(document.location.protocol == 'https:') {
        return url.replace('http://','https://');
   }

   return url;
}

使用replaceHttps函数:

JSvar url = 'http://www.didaolan.cn/dist/css/style.css'
var newUrl = replaceHttps(url);

console.log(newUrl);
//https://www.didaolan.cn/dist/css/style.css

原则上HTTPS调用HTTP资源受到限制,HTTP调用HTTPS资源不受限制,所以只需要考虑HTTPS调用资源的应用场景。

文章评论0 records

最新 最早

0

最新评论Latest comments

凡心的仙人凡心的仙人 03-18 14:35
谢谢你了!
rantrismrantrism 2023-04-03 11:27
您好~我是腾讯云开发者社区运营,关注了您分享的技术文章,觉得内容很棒,我们诚挚邀请您加入腾讯云自媒体分享计划。完整福利和申请地址请见:https://cloud.tencent.com/developer/support-plan 作者申
唐牛才是食神唐牛才是食神 2022-06-15 10:51
(*°▽°*)八(*°▽°*)♪,解决了
唐牛才是食神唐牛才是食神 2022-06-15 10:49
发现不得了的东西,今晚回去好好研究下...
胖螺胖螺 2022-02-04 00:58
( ゜- ゜)つロ 在写了在写了。看到也有些感慨。因为站长前年在我原博客的留言,让我毅然选择去深造,选择读研,曾经我想过挺多东西的,还是自己本专业的适合我自己。在这先表达感谢。新年快乐!