【问题标题】:Calling insecure endpoint from a website runs under HTTPS - nginx从网站调用不安全的端点在 HTTPS 下运行 - nginx
【发布时间】:2016-04-26 07:24:17
【问题描述】:

我的应用程序在 HTTPS 下运行,并使用来自已知机构之一的有效证书。不幸的是,我使用的是不支持 HTTPS 的第三方 API。

结果是已知消息 Mixed content: mydomain.com requested an 不安全的 XMLHttpRequest 端点。

是否可以向网络服务器添加异常以允许不安全地调用此 API!我正在使用 Nginx 顺便说一句。

如果不是什么可以解决这个问题的其他可能性。

我有一个解决方案,但我不喜欢它,因为它会成为性能缺陷:

实现一个API作为代理,通过HTTPS接收来自应用程序的请求,并使对第三方API的请求抛出HTTP。

【问题讨论】:

  • 我的回答是否解决了问题?如果您需要配置方面的帮助,我可以。
  • @khrm 明天会试一试并更新您

标签: rest nginx webserver endpoint content-security-policy


【解决方案1】:

我也有这个问题。如果您使用 https 并且不希望出现警告/错误,则页面上的所有内容都应该请求 https。如果您使用的是 nginx,则不需要实现 api 来代理。正如您正确推测的那样,无论您实施什么,都会对性能造成影响。只需在 nginx 中使用代理通行证。 在我们的配置中,我们有:

location /thirdparty/ {
        proxy pass http://thirdpartyserver/;
 }

请注意代理通行证中的斜杠,我将所有 http 的第三方 api 保留在 https://myserver/thirdparty/requesturl 中。尾部斜杠在发出请求时删除第三方。所以就变成了http://thirdpartyserver/request

官方参考:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass

【讨论】:

    【解决方案2】:

    为了允许混合内容,个人用户必须在他们的浏览器中允许它。允许来自一个来源的 HTTP 内容足以危及 HTTPS 的安全性,因此浏览器默认禁止混合内容。我看到的解决方案是:

    1. 摆脱 HTTPS(我不推荐)
    2. 按照您的建议执行并通过代理请求(这在安全方面仍然不是很好)
    3. 摆脱 HTTP 内容

    Google 在第 1 步中为开发者提供了一些建议(但它们基本上与上文有所呼应):https://developers.google.com/web/fundamentals/security/prevent-mixed-content/fixing-mixed-content#step-1

    【讨论】:

    • 感谢您的回复,我不会摆脱 HTTPS。浏览了这篇文章,但没有找到要找的东西,发布了这篇文章,因为有人可能会给出另一个想法。
    • 是的,那篇文章基本上概述了我上面所说的内容。从可用性的角度来看很不幸,但从安全的角度来看,混合内容被阻止是最重要的
    猜你喜欢
    • 1970-01-01
    • 2021-07-27
    • 2023-03-31
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    相关资源
    最近更新 更多