V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
itll
V2EX  ›  问与答

网站升级 HTTPS ,全 html 文件, web 服务器 IIS。 有什么好办法?

  •  
  •   itll · 2020-08-25 09:59:47 +08:00 · 2352 次点击
    这是一个创建于 1553 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 网站升级 HTTPS,全 html 文件,页面内引用图片,js 都是写的完整地址如下:
    <script type="text/javascript" src="http://www.demo.com/js/xx.js"></script>
    
    .logo a{display: block;float: left;background: url( http://www.demo.com/images/logo.png) no-repeat 0 0px;height: 50px;width: 170px;}
    
    <img src="http://www.demo.com/images/logo.jpg"></a>
    
    • IIS 已经配置 301 重定向(),但页面中图片链接写完整地址 http,导致 chrome 显示不安全
    • 目前找到 2 种解决方法,都需要修改许多页面(预估 500 个左右)
      • 修改页面中链接地址
      <img src="https://example.com/ququ.jpg" />  
      => 
      <img src="//example.com/static//ququ.jpg" />
      
      • 页面中添加
      <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> //站点内的 HTTP 请求,都会 HTTPS 的方式发起
      

    大家还有简单的方法吗?

    22 条回复    2020-08-26 00:23:14 +08:00
    zachlhb
        1
    zachlhb  
       2020-08-25 10:04:04 +08:00 via Android
    静态资源开头不要写协议,只需 //xxx.com/xxxx.jpg 就行了,会自动适配当前访问的协议类型
    CallMeReznov
        2
    CallMeReznov  
       2020-08-25 10:05:01 +08:00
    相对路径+不要 http 的外部连接就行了呀
    also24
        3
    also24  
       2020-08-25 10:05:55 +08:00
    建议修改链接,用 sed 或者找个主流的文本编辑器批量改一下就好
    itll
        4
    itll  
    OP
       2020-08-25 10:07:33 +08:00
    @zachlhb
    省略 URL 协议有个风险点:个别移动网络提供商篡改页面时,会将这种写法的 URL 改坏,导致资源无法访问。详见《诡异问题排查之「 DataURI 引发的血案」》这篇文章。
    https://imququ.com/post/sth-about-switch-to-https-3.html
    ysc3839
        5
    ysc3839  
       2020-08-25 10:09:31 +08:00
    meta http-equiv 的作用是通过 HTML 设置一些原本需要放在 HTTP 响应头中的属性,而不需要对服务器本身进行设置。
    但是在能调整服务器设置的情况下,就没必要使用 meta http-equiv 了,直接在 HTTP 响应头中设置即可。
    itll
        6
    itll  
    OP
       2020-08-25 10:10:05 +08:00
    @also24 蛋疼的是 N 年的官网, 许多老页面。无法完整 copy 下来,只能一个个的修改页面
    yuzo555
        7
    yuzo555  
       2020-08-25 10:10:52 +08:00
    实在懒惰的话可以在 IIS 中配置响应头:

    ```
    Content-Security-Policy: upgrade-insecure-requests;
    ```

    最好还是找个文本替换工具批量替换下。
    itll
        8
    itll  
    OP
       2020-08-25 10:12:26 +08:00
    @ysc3839 IIS 服务设置了,图片链接也 301 重定向。关键 chrome 上还是显示不安全
    Mutoo
        9
    Mutoo  
       2020-08-25 10:12:34 +08:00   ❤️ 1
    sublime 或者 vsc 都支持全目录查找替换的,用正则一下就搞定。不放心可以版本控制,commit 之前目测一下。500 个一点也不多。
    ysc3839
        10
    ysc3839  
       2020-08-25 10:15:52 +08:00
    @itll 最好确认一下,响应头中是否含有 Content-Security-Policy ?浏览器还会通过 http 请求吗?
    如果确认 Content-Security-Policy 已经生效,那可能是 Chrome 的限制吧,必须把链接改掉才不提示。
    wangkun025
        11
    wangkun025  
       2020-08-25 10:17:00 +08:00
    我也是 sublime 文本替换。分分钟的事儿。
    itll
        12
    itll  
    OP
       2020-08-25 10:19:16 +08:00
    @ysc3839 之前页面中没有加 Content-Security-Policy,是不行的。 加了就 OK 了
    itll
        13
    itll  
    OP
       2020-08-25 10:20:36 +08:00
    @Mutoo N 年的官网项目,没有版本控制。太大无法完整 copy 下来。还只能一个一个页面修改
    itll
        14
    itll  
    OP
       2020-08-25 10:21:24 +08:00
    @yuzo555 IIS 中添加相应头可以。我再测试测试
    ysc3839
        15
    ysc3839  
       2020-08-25 10:22:39 +08:00
    @itll 所以你前面说的“IIS 服务设置了”指的是什么?有试过在响应头中添加 Content-Security-Policy 吗?
    itll
        16
    itll  
    OP
       2020-08-25 10:27:48 +08:00
    @ysc3839 在 IIS 响应头中添加 Content-Security-Policy 可以,正在测试。之前以为只能 html 页面中添加
    sampeng
        17
    sampeng  
       2020-08-25 12:49:36 +08:00 via iPhone
    @itll 太大是多大?几十个 T ? G 单位的,你在这里等待答案的同时已经完事了
    ChanKc
        18
    ChanKc  
       2020-08-25 13:17:33 +08:00 via Android
    hsts ?
    itll
        19
    itll  
    OP
       2020-08-25 15:14:27 +08:00
    @sampeng 生产的服务器访问不了, 运维反馈部分文件夹无法压缩,里面掺杂的东西太多。产品展示全是当个 html 文件
    itll
        20
    itll  
    OP
       2020-08-25 15:19:04 +08:00
    感谢大家,问题已经解决。IIS-->Http 响应标头添加 Content-Security-Policy: upgrade-insecure-requests;

    @yuzo555 @ysc3839 感谢
    JooYun
        21
    JooYun  
       2020-08-25 18:33:47 +08:00
    http 协议强制 301 跳转到 https
    sampeng
        22
    sampeng  
       2020-08-26 00:23:14 +08:00 via iPhone
    @itll 作为一个研发…运维说文件夹不能压缩,是认真的么…这你也能信?唯一可能是到处是软链,也不是不能处理。

    加头解决万岁…
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3629 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:10 · PVG 08:10 · LAX 16:10 · JFK 19:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.