Graves
V2EX  ›  Java

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

  •  
  •   Graves · Nov 19, 2019 · 8525 views
    This topic created in 2547 days ago, the information mentioned may be changed or developed.
    项目是 struts2+jsp+jquery,不是前后分离的项目,现在部署了 nginx,配置好 ssl 和证书,可以正常访问,首页也出得来,但是 css 和 js 还是走的 http 协议,样式全部不见了
    location ^~/项目 / {
    proxy_pass http://localhost:8083/fire/;
    }
    proxy_pass 这样写有问题吗
    33 replies  •  2019-11-20 17:55:40 +08:00
    NerverLibis
    NerverLibis
    Nov 19, 2019
    1
    全站强制 https
    add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" always;
    Graves
    Graves
    OP
    Nov 19, 2019
    2
    难道只能全局把项目所有 http 替换成 https 吗(手动狗头)
    sleepm
    sleepm
    Nov 19, 2019
    3
    前台 href="/static/css/tomorrow.css"
    明白不
    用相对路径
    Graves
    Graves
    OP
    Nov 19, 2019
    4
    @sleepm 太难了,那么多个页面都要改,呜呜呜
    Graves
    Graves
    OP
    Nov 19, 2019
    5
    <link href="themes/fire/css/common.css" rel="stylesheet" type="text/css" />
    这样引用有问题吗
    chuhemiao
    chuhemiao
    Nov 19, 2019
    6
    直接目录也应该可以,如果你没有库里路径写死 要不就 ng 代理匹配下 http 路径
    atom234
    atom234
    Nov 19, 2019❤️5
    7
    <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
    eason1874
    eason1874
    Nov 19, 2019
    8
    @Graves #4 不难不难,程序没有模板就用 Nginx 的 sub_filter 一把梭,把绝对路径 HTTP 协议头全部替换成 HTTPS
    dixeran
    dixeran
    Nov 19, 2019 via Android
    9
    服务器 rewrite
    iasuna
    iasuna
    Nov 19, 2019
    10
    如果你要用 cloudflare rules 功能支持强制 https 如果你没用可能要手动配置了
    alexsunxl
    alexsunxl
    Nov 19, 2019❤️1
    11
    @dixeran 这种 rewrite 是不行的。
    浏览器现在的策略默认你的 http 资源是没 rewrite 到 https, 直接给你报错
    具体点就是说, 浏览器判断你源页面是 https 的, 但引用 http 资源,就直接报安全错误了,都没到发资源请求那一步
    Graves
    Graves
    OP
    Nov 19, 2019❤️1
    12
    @alexsunxl 是的,就是这样子,浏览器不支持 https 和 http 混合
    vultr
    vultr
    Nov 19, 2019
    13
    @atom234 #7 已经给了你最简单的解决方案了,。
    caola
    caola
    Nov 19, 2019
    14
    这么久才想着升级 https 么?
    我自己的网站早在 2014 就全站启用 https 了,当时还是用 @xoxo 的 5 年黑证书
    jinliming2
    jinliming2
    Nov 19, 2019 via iPhone
    15
    必须全部改成 https:// 的,或者去掉 http: 改成 // 开头,如果是站内的地址就用相对地址。
    比如
    https://example.com/xxx/yyy
    //example.com/xxx/yyy
    /xxx/yyy
    scukmh
    scukmh
    Nov 19, 2019
    16
    学一下全局替换,要多少事?
    muskill
    muskill
    Nov 19, 2019
    17
    15 楼说的对.建议大家以后看见页面调站内地址写绝对地址的,拉出去揍一顿就好了,让他长长记性
    yazhouli01
    yazhouli01
    Nov 19, 2019
    18
    资源路径都写的绝对路径吗?编辑器都有整个项目搜索替换的功能,你可以尝试下
    pmispig
    pmispig
    Nov 19, 2019
    19
    谁写的绝对路径让谁改,很简单嘛
    love4taylor
    love4taylor
    Nov 19, 2019
    20
    subs_filter 替换字符串啊
    shylockhg
    shylockhg
    Nov 19, 2019
    21
    话说静态资源有加密的必要么。。。
    lands
    lands
    Nov 19, 2019
    22
    @atom234 正解
    duan602728596
    duan602728596
    Nov 19, 2019 via iPhone
    24
    所以说前后端分离的项目,编译时直接注入资源地址,就没这么多事了
    run2
    run2
    Nov 19, 2019
    25
    @shylockhg 说这话是没体验过 被运营商各种插广告吧?
    sonicjam
    sonicjam
    Nov 19, 2019
    26
    不能写个脚本替换吗?
    cydian
    cydian
    Nov 20, 2019 via Android
    27
    @Graves 7 楼就是正解。直接在 header 加上就可以了。http header 或者 html meta 都有这个。 会直接把页面请求的 http 全部转成 https。
    cydian
    cydian
    Nov 20, 2019 via Android
    28
    @Graves 7 楼那个方法 不需要你去替换 http 开头的连接。原本写死的链接用那个方法都会自动处理成 https
    注意,有该 header 的页面,所有资源都会走 https,无论内站还是外站域名,引用了就自动 https
    popvlovs
    popvlovs
    Nov 20, 2019
    30
    nginx 配置 http 301 到 https 也可以吧,这样也不用改前端代码
    server {
    listen 80 default_server;
    location / {
    return 301 https://$host$request_uri;
    }
    }
    Graves
    Graves
    OP
    Nov 20, 2019 via iPhone
    31
    @popvlovs 不行的,首页是 https 但是页面引用的 http 资源,浏览器浏览器就报错,请求都发不出去
    popvlovs
    popvlovs
    Nov 20, 2019
    32
    哦对的,https 里引 http 不符合浏览器安全策略
    popvlovs
    popvlovs
    Nov 20, 2019
    33
    @Graves #1 楼的 hsts 方案有效么?那个好像也不用改代码
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3792 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 70ms · UTC 01:05 · PVG 09:05 · LAX 17:05 · JFK 20:05
    ♥ Do have faith in what you're doing.