项目升级 https,但是静态资源还是走的 http - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Graves
V2EX    Java

项目升级 https,但是静态资源还是走的 http

  •  
  •   Graves 2019-11-19 10:41:12 +08:00 7691 次点击
    这是一个创建于 2210 天前的主题,其中的信息可能已经有所发展或是发生改变。
    项目是 struts2+jsp+jquery,不是前后分离的项目,现在部署了 nginx,配置好 ssl 和证书,可以正常访问,首页也出得来,但是 css 和 js 还是走的 http 协议,样式全部不见了
    location ^~/项目 / {
    proxy_pass http://localhost:8083/fire/;
    }
    proxy_pass 这样写有问题吗
    33 条回复    2019-11-20 17:55:40 +08:00
    NerverLibis
        1
    NerverLibis  
       2019-11-19 10:49:58 +08:00
    全站强制 https
    add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" always;
    Graves
        2
    Graves  
    OP
       2019-11-19 10:50:24 +08:00
    难道只能全局把项目所有 http 替换成 https 吗(手动狗头)
    sleepm
        3
    sleepm  
       2019-11-19 10:50:26 +08:00
    前台 href="/static/css/tomorrow.css"
    明白不
    用相对路径
    Graves
        4
    Graves  
    OP
       2019-11-19 10:57:46 +08:00
    @sleepm 太难了,那么多个页面都要改,呜呜呜
    Graves
        5
    Graves  
    OP
       2019-11-19 10:59:54 +08:00
    <link href="themes/fire/css/common.css" rel="stylesheet" type="text/css" />
    这样引用有问题吗
    chuhemiao
        6
    chuhemiao  
       2019-11-19 11:09:09 +08:00
    直接目录也应该可以,如果你没有库里路径写死 要不就 ng 代理匹配下 http 路径
    atom234
        7
    atom234  
       2019-11-19 11:10:49 +08:00   5
    <meta http-equiv="Content-Security-Policy" cOntent="upgrade-insecure-requests">
    eason1874
        8
    eason1874  
       2019-11-19 11:23:18 +08:00
    @Graves #4 不难不难,程序没有模板就用 Nginx 的 sub_filter 一把梭,把绝对路径 HTTP 协议头全部替换成 HTTPS
    dixeran
        9
    dixeran  
       2019-11-19 11:25:13 +08:00 via Android
    服务器 rewrite
    iasuna
        10
    iasuna  
       2019-11-19 11:42:47 +08:00
    如果你要用 cloudflare rules 功能支持强制 https 如果你没用可能要手动配置了
    alexsunxl
        11
    alexsunxl  
       2019-11-19 11:44:18 +08:00   1
    @dixeran 这种 rewrite 是不行的。
    浏览器现在的策略默认你的 http 资源是没 rewrite 到 https, 直接给你报错
    具体点就是说, 浏览器判断你源页面是 https 的, 但引用 http 资源,就直接报安全错误了,都没到发资源请求那一步
    Graves
        12
    Graves  
    OP
       2019-11-19 11:46:57 +08:00   1
    @alexsunxl 是的,就是这样子,浏览器不支持 https 和 http 混合
    vultr
        13
    vultr  
       2019-11-19 11:47:47 +08:00
    @atom234 #7 已经给了你最简单的解决方案了,。
    caola
        14
    caola  
       2019-11-19 12:09:06 +08:00
    这么久才想着升级 https 么?
    我自己的网站早在 2014 就全站启用 https 了,当时还是用 @xoxo 的 5 年黑证书
    jinliming2
        15
    jinliming2  
       2019-11-19 12:14:47 +08:00 via iPhone
    必须全部改成 https:// 的,或者去掉 http: 改成 // 开头,如果是站内的地址就用相对地址。
    比如
    https://example.com/xxx/yyy
    //example.com/xxx/yyy
    /xxx/yyy
    scukmh
        16
    scukmh  
       2019-11-19 13:07:12 +08:00
    学一下全局替换,要多少事?
    muskill
        17
    muskill  
       2019-11-19 13:48:13 +08:00
    15 楼说的对.建议大家以后看见页面调站内地址写绝对地址的,拉出去揍一顿就好了,让他长长记性
    yazhouli01
        18
    yazhouli01  
       2019-11-19 16:30:18 +08:00
    资源路径都写的绝对路径吗?编辑器都有整个项目搜索替换的功能,你可以尝试下
    pmispig
        19
    pmispig  
       2019-11-19 16:45:59 +08:00
    谁写的绝对路径让谁改,很简单嘛
    love4taylor
        20
    love4taylor  
    PRO
       2019-11-19 16:51:17 +08:00
    subs_filter 替换字符串啊
    shylockhg
        21
    shylockhg  
       2019-11-19 17:18:40 +08:00
    话说静态资源有加密的必要么。。。
    lands
        22
    lands  
       2019-11-19 17:19:44 +08:00
    @atom234 正解
    duan602728596
        24
    duan602728596  
       2019-11-19 18:48:02 +08:00 via iPhone
    所以说前后端分离的项目,编译时直接注入资源地址,就没这么多事了
    run2
        25
    run2  
       2019-11-19 19:32:36 +08:00
    @shylockhg 说这话是没体验过 被运营商各种插广告吧?
    sonicjam
        26
    sonicjam  
       2019-11-19 21:35:19 +08:00
    不能写个脚本替换吗?
    cydian
        27
    cydian  
       2019-11-20 00:11:34 +08:00 via Android
    @Graves 7 楼就是正解。直接在 header 加上就可以了。http header 或者 html meta 都有这个。 会直接把页面请求的 http 全部转成 https。
    cydian
        28
    cydian  
       2019-11-20 00:13:02 +08:00 via Android
    @Graves 7 楼那个方法 不需要你去替换 http 开头的连接。原本写死的链接用那个方法都会自动处理成 https
    注意,有该 header 的页面,所有资源都会走 https,无论内站还是外站域名,引用了就自动 https
    cydian
        29
    cydian  
       2019-11-20 00:14:50 +08:00 via Android
    popvlovs
        30
    popvlovs  
       2019-11-20 11:50:05 +08:00
    nginx 配置 http 301 到 https 也可以吧,这样也不用改前端代码
    server {
    listen 80 default_server;
    location / {
    return 301 https://$host$request_uri;
    }
    }
    Graves
        31
    Graves  
    OP
       2019-11-20 14:12:44 +08:00 via iPhone
    @popvlovs 不行的,首页是 https 但是页面引用的 http 资源,浏览器浏览器就报错,请求都发不出去
    popvlovs
        32
    popvlovs  
       2019-11-20 17:45:43 +08:00
    哦对的,https 里引 http 不符合浏览器安全策略
    popvlovs
        33
    popvlovs  
       2019-11-20 17:55:40 +08:00
    @Graves #1 楼的 hsts 方案有效么?那个好像也不用改代码
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5402 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 01:37 PVG 09:37 LAX 17:37 JFK 20:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86