首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Coding
V2EX  ›  Java

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

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