如何处理应采用 https 保护的网站中的混合内容?

2024-01-01

我正在服务器 A 上构建一个网站(已注册域名),用于人们创建和运行他们的“应用程序”。
这些“应用程序”实际上是运行在服务器B上的docker容器,在容器中,有一个可以直接访问的小型Web应用程序,如下所示:

http://IP_ADDR_OF_SERVER_B:PORT

PORT 是一个随机的大数字,映射到 docker 容器。 现在我可以使 SSL 证书在服务器 A 上工作,这样它就可以通过访问正常工作:

https://DOMAIN_NAME_OF_SERVER_A

问题是,我通过像上面一样访问“http”将“apps”包含在 iframe 中,因此我的浏览器(Chrome)拒绝打开它并报告错误:

Mixed Content: The page at 'https://DOMAIN_NAME_OF_SERVER_A/xxx' was loaded over HTTPS, but requested an insecure resource 'http://IP_ADDR_OF_SERVER_B:PORT/xxx'. This request has been blocked; the content must be served over HTTPS.

那么,我该如何处理这样的问题呢?
我是一个全栈菜鸟,如果您能分享一些关于如何构建一个健康的 https 网站同时以正确的方式解决此类问题的知识,我将不胜感激。


补充说明

好吧,我想我只是抛出了问题的概要,这里有更多细节。

我发现它是完整且直接的,可以使 iframe 请求通过 https 提供服务,这样我就不会再感到困惑了。

然而问题是,由于所有“应用程序”都是动态创建/删除的,因此我似乎需要为每个应用程序准备许多证书。

自签名证书是否可以正常工作而不会被浏览器阻止或投诉?或者我是否有一种方法可以使用一个 SSL 证书为所有“应用程序”提供服务?


软件环境

Server A:运行 node.js 网站,监听端口 5000 并使用 Nginx proxy_pass 提供服务。

server {
    listen 80;
    server_name DOMAIN_NAME_OF_SERVER_A;

    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass     http://127.0.0.1:5000;
    }
}
server {
    listen 443;
    server_name DOMAIN_NAME_OF_SERVER_A;

    ssl on;
    ssl_certificate /etc/nginx/ssl/DOMAIN_NAME_OF_SERVER_A.cer;
    ssl_certificate_key /etc/nginx/ssl/DOMAIN_NAME_OF_SERVER_A.key;
    ssl_session_timeout 5m;
    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass     http://127.0.0.1:5000;
    }
}

Server B:运行node.js应用程序监听不同的随机大端口号,例如50055,在创建“应用程序”时动态分配。 (事实上​​,这些应用程序在 docker 容器中运行,而我认为这并不重要)如果需要可以运行 Nginx。

Server A and Server B在公共交通中互相交谈。


Solution

正如所有答案一样,尤其是来自 @eawenden 的答案,我需要一个反向代理来实现我的目标。

除此之外,我还做了几件事:
1. 分配域名Server B用于使用 LetsEncrypt 证书。
2. 将预定义的 url 代理到特定端口。

因此我使用 nginx 设置了一个反向代理服务器Server B,代理所有请求,例如:

https://DOMAIN_NAME_OF_SERVER_B/PORT/xxx

to

https://127.0.0.1:PORT/xxx

PS:nginx反向代理配置开启Server B

server {
    listen 443;
    server_name DOMAIN_NAME_OF_SERVER_B;

    ssl on;
    ssl_certificate     /etc/nginx/ssl/DOMAIN_NAME_OF_SERVER_B.cer;
    ssl_certificate_key /etc/nginx/ssl/DOMAIN_NAME_OF_SERVER_B.key;
    ssl_session_timeout 5m;

    rewrite_log off;
    error_log   /var/log/nginx/rewrite.error.log info;

    location ~ ^/(?<port>\d+)/ {
        rewrite ^/\d+?(/.*) $1 break;
        proxy_pass http://127.0.0.1:$port;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 86400;
    }
}

因此一切似乎都按预期进行!
再次感谢所有回答者。


我在动态请求中遇到混合内容问题

add_header 'Content-Security-Policy' 'upgrade-insecure-requests';

这解决了我的 nginx 服务器问题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何处理应采用 https 保护的网站中的混合内容? 的相关文章

随机推荐

  • “对私有方法的致命错误调用”但方法受到保护

    第一次在 PHP 中扩展一个类 我收到一个致命错误 提示该方法是私有的 而实际上它不是 我确信这是基本的东西 但我研究过书籍和论坛 但我无法确定我做了什么来产生这个错误 非常感谢任何帮助 详情如下 错误信息 致命错误 从第 726 行 ro
  • Bootstrap v4 中的“p-N”及其变体代表什么?

    我发现 Bootstrap v4 中的命名不太直观 我知道他们希望最大限度地减少所有类使标记混乱的影响 但我无法得出合理的结论 我可以猜测 但我找不到具体的答案 p 1 p 2 p N Flexbox 相关 但是什么是p代表 d flex
  • 通过代理的 XMLDocument.Load(url)

    我有一些代码基本上使用 XMLDocument Load uri 方法读取 XML 文档 该方法运行良好 但如果通过代理进行调用 则效果不佳 我想知道是否有人知道通过代理进行此调用 或达到相同效果 的方法 这是我最终使用的代码 WebPro
  • 使用 php 绘制图表

    我需要制作图表 饼图和条形图 并使用 php 数据 数据是 JSON 编码的 生成图表的最佳方法是什么 我现在正在查看 Google Chart api 还有什么比这更好 读作 更容易 的吗 pChart http pchart sourc
  • +[NSObject初始化]内部的dispatch_once是否过度杀伤?

    如果我在其中创建一个单例 NSObject initialize 我需要将我的代码放入dispatch once像这样阻止 static NSObject Bar implementation Foo void initialize if
  • 命名管道:C# 服务器、C++ 客户端

    我编写了两对命名管道客户端 服务器程序 C NET 4 中的第一对 C 中的第二对 非托管 所有 4 个测试程序都使用相同的管道名称 pipe mypipe C 对彼此工作得很好 我从客户端发送一条消息 服务器接收该消息 C 对也可以很好地
  • 在 For 循环内使用 IF 条件检查时如何丢弃数据表中的空值

    在我的项目中 我根据数据库中的某些条件选择用户 ID 并将其保存在数据表中 并使用基于条件的用户输入的 ID 进行检查 只会获取 5 行 但在循环中和 IF 条件下 它正在检查第 6 行为空 因此它抛出异常 位置 6 处没有行 我的代码是
  • ie8 和 ie7 的 2 列 div

    我想要一行有 2 个单元格 该行和 2 个单元格必须以百分比表示 我曾尝试这样做 container width 100 display inline table sidebar1 float left width 30 mainConte
  • 如何在 Swift 中正确设置像 imageContacts 这样的圆形 imageView?

    我想在 imageView 中显示图片 就像图像联系人 在圆圈中 但是当我尝试显示它时 imageView 会重新调整其大小 并且在圆圈中无法正确显示 image layer borderWidth 1 0 image layer mask
  • 有哪些重构方法可以减少编译代码的大小?

    我有一个需要新功能的旧固件应用程序 应用程序的大小已经接近设备的有限闪存容量 而少数新功能和变量将其推向极限 打开编译器优化确实可以解决问题 但客户对此持谨慎态度 因为它们过去曾导致过失败 那么 在重构 C 代码以产生更小的输出时 需要注意
  • JOIN 或 WHERE 中的条件

    在 JOIN 子句中添加条件与在 WHERE 子句中添加条件之间是否有任何区别 性能 最佳实践等 例如 Condition in JOIN SELECT FROM dbo Customers AS CUS INNER JOIN dbo Or
  • 反应流与反应堆模式?

    我想知道反应流 由反应宣言定义 和反应器模式 https en wikipedia org wiki Reactor pattern https en wikipedia org wiki Reactor pattern 我读到 Proje
  • 从 Chrome 中打开的
    元素中删除蓝色边框?

    我正在升级我的网站以使用新的 HTML5details元素以获得更好的可访问性 一切正常 但不幸的是 当我单击打开元素时 Chrome 应用了丑陋的蓝色边框 有什么办法可以阻止 Chrome 这样做吗 我看不到任何显式的 CSS 样式被应用
  • 如何使用 apache POI 在 ms word doc 中使用 rowspan 和 colspan 创建表?

    我正在使用 APACHE POI 创建包含表的 Word 文档 表格如下所示 我想创建具有行跨度和列跨度的单元格 如图所示 可以使用 APACHE POI 吗 有没有其他java库可以实现同样的功能 任何帮助表示赞赏 你可以试试这个 pub
  • 在 Android 4.0.3 中插入​​错误 SqLite [重复]

    这个问题在这里已经有答案了 我的 Android 4 0 3v 平板电脑出现 Sqlite 问题 Error 07 28 14 28 18 495 6995 7125 com titan tablet E AndroidRuntime FA
  • 检测Python函数中的所有全局变量?

    我正在尝试分析一些混乱的代码 这些代码恰好在函数中大量使用全局变量 我正在尝试重构代码 以便函数仅使用局部变量 有没有办法检测函数内的全局变量 例如 def f x x x 1 z x y return z 这里的全局变量是y因为它不是作为
  • android活动截图如何?

    你好朋友我正在制作一个带有 webview 的应用程序 我想截取我的活动截图 目前我正在使用此代码来捕获图像 public Bitmap takeScreenshot View rootView findViewById android R
  • MySQLi 无法准备语句

    我在脚本中运行两个查询room php 两者都使用MySQLi准备好的语句 其代码如下 Get room name stmt mysqli gt prepare SELECT name FROM rooms WHERE r id stmt
  • 如何在Android中使用SmsManager发送具有自定义线程ID的短信?

    我想创建一条带有自定义线程 ID 例如 10001 的 SMS 我怎样才能做到这一点 原因是因为我需要实现删除短信功能 而删除特定短信线程的唯一方法是通过线程 ID 或电话号码 而此时获取电话号码并不完全可能 因此需要定义自定义线程 ID在
  • 如何处理应采用 https 保护的网站中的混合内容?

    我正在服务器 A 上构建一个网站 已注册域名 用于人们创建和运行他们的 应用程序 这些 应用程序 实际上是运行在服务器B上的docker容器 在容器中 有一个可以直接访问的小型Web应用程序 如下所示 http IP ADDR OF SER