zoukankan      html  css  js  c++  java
  • 关于http与https的注意点

    背景:在一次项目生产上线中遇到地址在IOS版本的app中打不开或者接口请求不返回的情况,在安卓机和PC上表现正常,经排查,问题出在http请求上,原因详解

    在早期PC上和安卓手机上比较不严格,在https页面中访问http的接口还是能通,但是在新IOS上https下的网页只能访问https的接口和地址,不然js和图片都会显示异常

    1、HTTPS下不能调用HTTP静态资源:

      浏览器默认是不允许在HTTPS里面引用HTTP资源的,一般都会弹出提示框,用户确认后才会继续加载,用户体验非常差。而且如果在一个HTTPS页面里动态的引入HTTP资源,比如引入一个js文件,会被直接block掉的。Chrome 21之后,在SSL加密页面embed非SSL的Flash会怎样呢?会被默默的屏蔽掉,只留下一句console报告。浏览器为了安全,https下跨协议调用http的是不行的,控制台里会有警告。所以你只能去找https协议的 css、js资源了。也有文章说https页面中可引用http的图片,我试了一下,发现虽然不会报红错,但是会有黄色的提醒。最好的方法是使用https的资源。

    2、HTTPS下不能调用HTTP的异步请求:

      如果在https的页面中使用http的ajax调用。会提示跨域的报错,很明显有违ip地址、端口、协议的跨域限制。有两种方案:其一试调用https的ajax,既然页面都升级到https了那么服务接口升级也是应该的。其二既然跨域了,我们可以考虑jsonp的方案,但是jsonp 发出的是js文件请求(再次强调jsonp和ajax是两回事)。所以同上一个问题https中应用静态资源也必须是https的。所以即使是jsonp的方式也要提供jsonp接口的服务器支持https。看来异步请求也要升级到https才行。

    a标签好不好用?

      这个还是好用的,即使是https的页面也可以跳转到http的链接。

    未知情况下,需要兼容2种协议:

      以“//”开头表示相对协议,页面使用的是什么协议,文件请求也自动是什么协议。

    根据页面的情况加入协议,拼装成完整的url:

      window.location.protocol

    使用 HTTPS 协议主要是为了保护用户隐私,防止流量劫持。但是可能会影响百度搜索录入

  • 相关阅读:
    vue过滤器filters
    vue指令
    java命令
    mysql的information_schema表
    es6 Object的keys values entries方法
    mysql information_schema.INNODB_TRX
    流动相似性例子
    【转】time 模块详解(时间获取和转换)
    查找——平衡二叉树的实现(代码超详细注释)
    py中变量名的“秘密”
  • 原文地址:https://www.cnblogs.com/huangxiaowen/p/7865570.html
Copyright © 2011-2022 走看看