j8typz 发表于 2024-8-4 14:50:17

用 // 代替 http:// 有什么好处(自适应https)


    <div style="color: black; text-align: left; margin-bottom: 10px;">
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">转载自简书</p>https://www.jianshu.com/u/dd13775ff7c7

      <h1 style="color: black; text-align: left; margin-bottom: 10px;"><strong style="color: blue;">// 缺省协议</strong></h1>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">//缺省协议的<span style="color: black;">运用</span>,<span style="color: black;">表率</span>资源<span style="color: black;">拜访</span>的协议和当前页面保持一致,<span style="color: black;">倘若</span>当前页面是http ,采用http协议<span style="color: black;">拜访</span>,<span style="color: black;">倘若</span>是https,则<span style="color: black;">运用</span> https 协议<span style="color: black;">拜访</span>。<span style="color: black;">这般</span>用就不管是http还是升级到https都不用改动代码,<span style="color: black;">此刻</span><span style="color: black;">非常多</span>CDN资源都是<span style="color: black;">这般</span>引用。<span style="color: black;">通常</span><span style="color: black;">运用</span>在内链中,外链的协议头<span style="color: black;">拥有</span>不确定性的<span style="color: black;">原由</span>。</p>
      <h1 style="color: black; text-align: left; margin-bottom: 10px;"><strong style="color: blue;">//的含义?</strong></h1>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">//是缺省协议的写法,例如</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">//https://www.jianshu.com/css/app.css</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">缺省协议默认<span style="color: black;">运用</span>当前协议</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">当前页面为HTTP时,等效</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">http://www.jianshu.com/css/app.css</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">当前页面为HTTPS时,等效</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">https://www.jianshu.com/css/app.css</p>
      <h1 style="color: black; text-align: left; margin-bottom: 10px;"><strong style="color: blue;"><span style="color: black;">运用</span> // 代替 http:// 的<span style="color: black;">要求</span>和好处?</strong></h1>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">当前页面和<span style="color: black;">目的</span>资源<span style="color: black;">同期</span>支持HTTP和HTTPS正在从http升级到https</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">这般</span>的好处<span style="color: black;">便是</span>能<span style="color: black;">按照</span>用户打开页面的方式自适应的<span style="color: black;">选取</span>资源的请求协议,</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">针对</span>https页面的内容,浏览器默认会组织非https内容,<span style="color: black;">能够</span>避免这种<span style="color: black;">状况</span></p>
      <h1 style="color: black; text-align: left; margin-bottom: 10px;"><strong style="color: blue;"><span style="color: black;">运用</span> // 的缺点</strong></h1>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">直接打开本地文件调试时,<span style="color: black;">运用</span>的协议是文件协议(file://)</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">这个时候这个协议会变成 </p>file://https://www.jianshu.com/css/app.css显然是不存在的

      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">不外</span>,相<span style="color: black;">针对</span>整站升级的便携性,这点问题可有可无了。</p>
      <h1 style="color: black; text-align: left; margin-bottom: 10px;"><strong style="color: blue;"><span style="color: black;">运用</span> // 的优点</strong></h1>与当前网站的协议保持一致,快速发布与你当前协议相匹配的版本,<span style="color: black;">同期</span>减少SSL或其它协议版本的<span style="color: black;">安排</span>成本。<span style="color: black;">研发</span>者不<span style="color: black;">必须</span>管服务器云端<span style="color: black;">供给</span>什么协议,只要用//符号来<span style="color: black;">表率</span>一切最适应的匹配。<span style="color: black;">由于</span><span style="color: black;">非常多</span>网站都将http升级为https,<span style="color: black;">这般</span>就<span style="color: black;">能够</span>防止<span style="color: black;">咱们</span>的网址被劫持,前期为了在转换过程中我出差错<span style="color: black;">咱们</span><span style="color: black;">无</span>强制<span style="color: black;">转</span>,<span style="color: black;">便是</span>当用户<span style="color: black;">拜访</span>http或https都<span style="color: black;">能够</span>正常<span style="color: black;">拜访</span>,<span style="color: black;">那样</span>里面的js,<span style="color: black;">照片</span>,链接等都<span style="color: black;">不可</span>用https或http,<span style="color: black;">那样</span>有什么<span style="color: black;">处理</span><span style="color: black;">办法</span>呢,<span style="color: black;">那样</span><span style="color: black;">处理</span><span style="color: black;">办法</span>来了<span style="color: black;">便是</span>用//,不要带http:与https<span style="color: black;">这般</span>就<span style="color: black;">能够</span>了。//这种写法是<span style="color: black;">按照</span>你请求的协议自动添加协议的。举个栗子:你的网站是http协议,<span style="color: black;">那样</span>其实你<span style="color: black;">拜访</span>的<span style="color: black;">便是</span>http://xxxx <span style="color: black;">倘若</span>你的网站是https协议的,<span style="color: black;">那样</span>请求的<span style="color: black;">位置</span>会变成https://xxxx 要<span style="color: black;">晓得</span>,<span style="color: black;">倘若</span>你写<span style="color: black;">成为了</span>http://xxx. <span style="color: black;">那样</span><span style="color: black;">倘若</span>你们的网站线上是https,<span style="color: black;">那样</span>可能会报安全警告,有的浏览器<span style="color: black;">乃至</span>没法正常加载页面。<span style="color: black;">倘若</span>你直接写成https,要<span style="color: black;">晓得</span>,本地<span style="color: black;">研发</span>可是http啊...<h1 style="color: black; text-align: left; margin-bottom: 10px;"><strong style="color: blue;">以下内容摘自知乎</strong></h1>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">好处<span style="color: black;">非常多</span>人都答过了。升级 https 当然最能感受到这种好处。我只是<span style="color: black;">弥补</span>一个<span style="color: black;">为何</span>前人不这么写的理由。当然,确实有<span style="color: black;">非常多</span>前端并不<span style="color: black;">晓得</span>这种写法。<span style="color: black;">不外</span>,就算<span style="color: black;">晓得</span><span style="color: black;">亦</span>很可能<span style="color: black;">没法</span>这么写。<span style="color: black;">由于</span> UC 浏览器的许多较早版本不支持这种写法,会把 //a.b/ 直接理解为 /a.b/,<span style="color: black;">亦</span><span style="color: black;">便是</span>说,<span style="color: black;">倘若</span>你在 http://example.com 的页面里写了</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">//example-cdn.net/static-file 的<span style="color: black;">位置</span>,UC <span style="color: black;">实质</span><span style="color: black;">拜访</span>的是 </p>http://example.com/example-cdn.net/static-file 。UC 过去的市占率<span style="color: black;">大众</span>是<span style="color: black;">晓得</span>的。<span style="color: black;">因此</span>……
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">一看你就没做过「全站 HTTPS 升级改造」。我给全站做 HTTPS 升级的时候,真的想把写 http:// 的人砍死。尤其是数据库里的链接和 JS 里拼接出来的 url。<span style="color: black;">时期</span>用了<span style="color: black;">各样</span>正则,还要人工核查。奈何写 http:// 的程序员太多,只能作罢。有人还在评论里问<span style="color: black;">原由</span>,原因<span style="color: black;">便是</span><span style="color: black;">倘若</span>你全写 //,我就<span style="color: black;">不消</span>改造数据库里的数据和源码了,直接升级 https 就行了。你可能会说 https 改造这种事情很少<span style="color: black;">出现</span>吧,巧了,我在腾讯和阿里都遇到了 https 改造 ಥ_ಥ <span style="color: black;">况且</span>在阿里的时候我要负责 1688 整站(个别<span style="color: black;">分部</span><span style="color: black;">自动</span>改造)的前端代码改造(不只是 HTML,还有 CSS 、JS、Velocity 模板等!简直<span style="color: black;">便是</span>脏活累活,我 TM <span style="color: black;">为何</span>要接这个活儿),你猜我骂写 http:// 的人骂了多少次?有的前端还直接在 JS 里写 http,沿用一下当前页面的协议你会死啊?</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">还有的前端用正则判断 url 时居然只接受 http:// 和 https:// 不接受 //,真的是没常识。太多程序员,太智障了。<span style="color: black;">亦</span>有可能是<span style="color: black;">由于</span><span style="color: black;">她们</span>没听说过 HTTPS <span style="color: black;">罢了</span>。<span style="color: black;">倘若</span>你还不懂,我就问你几个问题:<span style="color: black;">倘若</span>你用 http:// ,那你<span style="color: black;">便是</span>默认当前页面是 http 协议了,你一个前端凭什么决定当前页面的协议?难道你不<span style="color: black;">晓得</span> http 链接在 https 页面里会报错啊?你应该沿用当前页面的协议,<span style="color: black;">因此</span>你要写 //<span style="color: black;">倘若</span>你用 https://,<span style="color: black;">亦</span>是<span style="color: black;">同样</span>的问题,你怎么<span style="color: black;">晓得</span>三年后会不会<span style="color: black;">显现</span>一个 httpshe://,难道到时候你再<span style="color: black;">所有</span>改成 httpshe:// ?不要做任何<span style="color: black;">显著</span>是错误的假设!你<span style="color: black;">基本</span>就不<span style="color: black;">晓得</span>当前页面会用什么协议打开!<span style="color: black;">因此</span>你要用 // 啊!类似的错误假设还有<span style="color: black;">非常多</span>,<span style="color: black;">例如</span><span style="color: black;">非常多</span>中国程序员都以为<span style="color: black;">tel</span>号码只含数字和括号,不含字母。真的是<span style="color: black;">这般</span>吗?</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">有人说全局替换不就完了吗?举例说明吧,假设淘宝要升级 https于是你将 http:// <span style="color: black;">所有</span>替换成 //<span style="color: black;">第1</span>个 bug:你把 &lt;a href="http://tmail.com"&gt; 替换<span style="color: black;">成为了</span> &lt;a href="//tmail.com"&gt; ,然而当时 http://tmail.com 还不支持 https于是你将<span style="color: black;">必定</span>范围内的域名替换,http://(taobao|taobao2|taobao3).com 替换成 //$1.com第二个 bug:有些 JS 是<span style="color: black;">这般</span>写的 url = "http://" + location.hostname + / + path,还有写 JS 是<span style="color: black;">这般</span>写的 /^http:///.test(input)。你说这个就没法用正则了,在所有 JS 里全局搜索 http <span style="color: black;">而后</span>人工审查吧。你<span style="color: black;">晓得</span>淘宝有多少 JS 文件吗…… <span style="color: black;">况且</span>这些文件是缓存十年的……就算你改了,<span style="color: black;">亦</span>不<span style="color: black;">必定</span>能更新。<span style="color: black;">况且</span>一旦你改错了,影响用户下单,马云损失一个亿你赔得起吗?第三个 bug:有些数据<span style="color: black;">基本</span>就不在代码里,在数据库里,<span style="color: black;">例如</span> user.image 的值是 http 开头的。于是你将 user.image 写成 user.image.replace(http://, //) <span style="color: black;">或</span>你直接改数据库里的数据(当数据量很大的时候,这基本是不可能的)第四个 bug:你忘了改 nginx、crossdomain 里面的域名第五个 bug:你忘了改配置系统里面的 base_url第六个 bug:你的 https 页面嵌入了一个<span style="color: black;">外边</span>的 http iframe……你就哭吧,这很难<span style="color: black;">处理</span>,运气好直接改成 // (<span style="color: black;">外边</span>支持 https <span style="color: black;">就可</span>),运气<span style="color: black;">欠好</span>就要改页面<span style="color: black;">规律</span>了。第 N 个 bug……HTTPS 升级<span style="color: black;">便是</span>脏活累活,你说简单你来做,你<span style="color: black;">起始</span>做就<span style="color: black;">晓得</span>牵连的<span style="color: black;">地区</span>有多少了。最好的<span style="color: black;">方法</span>还是把协议做成很容易变更的方式,<span style="color: black;">例如</span>遵循当前页面,<span style="color: black;">或</span>用变量,反正写死 http:// 肯定<span style="color: black;">欠好</span>。有些程序员写代码的时候,明明<span style="color: black;">晓得</span>有 HTTPS 却不去兼容,心理想着「反正我在这个<span style="color: black;">机构</span>呆两年就走了,HTTPS <span style="color: black;">最少</span>还有三年呢」<span style="color: black;">而后</span>就写出了垃圾代码。</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">本来</span>你的网站是http的,所有的src都是 http开头,以为遭到狗屎运营商<span style="color: black;">海量</span>劫持,在你的页面塞了一大堆少儿不宜/和单纯<span style="color: black;">宣传</span>的内容的时候,有人告诉你替换https<span style="color: black;">能够</span>改善这个问题,<span style="color: black;">那样</span>这个时候你就<span style="color: black;">晓得</span> 之前的src和ajax写得//而不是http://是当初多么明智的决定。。。</p>
    </div>




听听海 发表于 2024-9-9 02:00:16

祝福你、祝你幸福、早日实现等。

流星的美 发表于 2024-9-10 13:16:09

楼主节操掉了,还不快捡起来!

b1gc8v 发表于 2024-11-1 09:52:02

这夸赞甜到心里,让我感觉温暖无比。

m5k1umn 发表于 2024-11-7 20:42:17

你的见解独到,让我受益匪浅,期待更多交流。

b1gc8v 发表于 2024-11-11 15:49:11

祝福你、祝你幸福、早日实现等。
页: [1]
查看完整版本: 用 // 代替 http:// 有什么好处(自适应https)