关于 https 平台下 iframe 嵌入 http 链接,浏览器报安全警告的问题

2023-08-22 14:34:29 +08:00
 ImmerTry

现在公司将自有平台嵌入到对方平台,但是目前对方平台访问的地址是有 ssl 证书的; 将我们平台以 iframe 方式嵌入到对方系统中,浏览器报安全警告,访问不了。 已知:1 、公司目前还未提到会购买域名配置 ssl 证书 。 尝试过的方法:配置 nginx 代理,但是都失败了。 有没有类似经历的老哥,分享下解决办法。

2321 次点击
所在节点    程序员
29 条回复
renfei
2023-08-22 14:40:40 +08:00
HTTPS 的页面中,禁止加载 HTTP 的资源,这是规范,不能改

现在 SSL 证书好多免费的,不用购买啊,用免费的就行啊
flyqie
2023-08-22 14:46:04 +08:00
chrome 这块唯一的方法就是在浏览器的网站权限设置里面开启`不安全内容`,但这个是走的调用方当前域名的,虽然不是顶级域名,但粒度也是比较粗的,并且还得用户手动调整,极其不友好。

建议还是申请上个 ssl 吧,他好你也好。。
flyqie
2023-08-22 14:47:24 +08:00
@renfei #1

其他浏览器不清楚,但 chrome 可以针对当前域名手动干掉限制,不知道楼主什么场景。。
tony1016
2023-08-22 14:47:53 +08:00
第一,没有别的办法;第二,部署证书不需要掏钱
NewYear
2023-08-22 14:48:24 +08:00
没有购买域名是吧,实在不行个人掏钱买一个,买个便宜的,几块钱一年。
或者自己用的域名,开设一个二级域名。
至于 SSL 证书,免费 1 年的有,自动脚本的也有。

在一个公司的成本中,域名的成本低到可怕,工作还是要学会如何申请资源、申请预算,不要什么都靠自己的双手去搞。
DOLLOR
2023-08-22 14:54:15 +08:00
能上 HTTPS 就上,最好别想什么怪招绕过。
要是将来 HTTP 页面被攻击了,导致别人平台也受牵连了,到时候就有扯不完的纠纷了。
clf
2023-08-22 14:56:09 +08:00
可以反向代理对方的套 https 来解决。但为啥你们不自己上 https……
ImmerTry
2023-08-22 14:57:41 +08:00
@flyqie 调试的时候是这样搞得,目前联调结束了,就差这个问题了
renfei
2023-08-22 14:58:49 +08:00
@flyqie #3 你无法远程操作用户手里的浏览器设置啊,自己改自己的浏览器只是自己降低了自己浏览器的安全等级,并不能干预其他用户啊
githmb
2023-08-22 14:59:22 +08:00
让对方反代
ImmerTry
2023-08-22 15:00:08 +08:00
@tony1016 部署证书我看到的是需要域名的,公司现在还没有申请
ImmerTry
2023-08-22 15:01:42 +08:00
@githmb 我也是想要这样做,但是我想自己先试试(用自己的域名),但是没搞通
ImmerTry
2023-08-22 15:02:29 +08:00
@renfei 的确是这样的,ssl 是一劳永逸的最优解
abcbuzhiming
2023-08-22 15:05:20 +08:00
@ImmerTry 没有域名的 web 现在居然还能对外提供服务?你们难道不是国内,或者搞的不是公网吗?


@ImmerTry 别用自己的域名,再次强调,给公司干活不要用自己的私人资源,除非事先就和公司讲清楚。你看看前两天那个用自己的 chatgpt-key 给公司搭建 chatgpt 服务的哥们,最后搞出多大的纠纷来,还被公司告
ImmerTry
2023-08-22 15:06:39 +08:00
@clf 有反向代理的配置参考么;公司上 https 走流程要花一些时间,想着看能不能有别的方法
ImmerTry
2023-08-22 15:07:51 +08:00
@abcbuzhiming 感谢提醒,目前是提供的公网 IP 供对方访问。
jifengg
2023-08-22 15:15:03 +08:00
补充以上,让公司赶紧购买域名,因为,接下来还有备案,这个不麻烦,但是要等至少 20 自然天。
caiqichang
2023-08-22 15:30:45 +08:00
反向代理可以这样设置,比如 nginx
location ^~ /你的域名 {
proxy_pass http://你的域名/;
}

然后 iframe 地址
<iframe src="https://他的域名/你的域名/..."></iframe
caiqichang
2023-08-22 15:31:25 +08:00
或者直接
<iframe src="/你的域名/..."></iframe>
clf
2023-08-22 15:32:42 +08:00
@ImmerTry 一个参考:

server {

# SSL 监听 443 端口

listen 443 ssl http2;
listen [::]:443 ssl http2;

#下面_换成你证书对应的域名
server_name _;

# SSL 的证书和 key 的路径
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;

location / {
#下面换成你们 http 的地址
proxy_pass http:xxxx.com;
#下面这些配置是修改 Header 的,你可以选择增加/删除或修改,部分情况下需要手动配置 host 等 header
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Forwarded $proxy_add_forwarded;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
}
}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/967369

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX