react插入meta标签,解决Https链接失效问题

3 篇文章 0 订阅

react外部链接失效问题

react外部链接在生产环境报错Mixed Content: The page at 'xxx' was loaded over HTTPS, but requested an insecure resource 'xxx'.

原因:HTTPS页面里动态的引入HTTP资源,比如引入一个js文件,会被直接block掉的.在HTTPS页面里通过AJAX的方式请求HTTP资源,也会被直接block掉的。

解决方法:

页面的head中加入:

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

意思是自动将http的不安全请求升级为https

由于react页面没有head开放出来,需要通过js将meta标签添加进去

 

componentWillMount() {   //初始化时在页面加载完成前执行

    this.appendMeta()

  }

  componentWillReceiveProps(){  //刷新页面时执行

    this.appendMeta()

  }

  appendMeta = () =>{

    //在head标签插入meta标签,解决在生产环境链接失效问题

    const metaTag = document.getElementsByTagName('meta');

    let isHasTag = true;

    for(let i=0;i<metaTag.length;i++){   //避免重复插入meta标签

      const httpEquiv = metaTag[i].httpEquiv;

      if(httpEquiv == 'Content-Security-Policy'){

        isHasTag = false;

      }

    }

    if(isHasTag){

      const headItem = document.head;

      let oMeta = document.createElement('meta');

      oMeta.setAttribute('http-equiv','Content-Security-Policy');

      oMeta.content = 'upgrade-insecure-requests';

      headItem.appendChild(oMeta)

    }

  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值